Last active
August 29, 2015 14:10
-
-
Save jbking/eb1c1ea1425ac59bbce4 to your computer and use it in GitHub Desktop.
Check Python Inheritance Behavior
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$ python inheritance.py | |
At SuperClass.echo: SuperClass | |
---------- | |
Before calling super at AClass.echo: AClass | |
At SuperClass.echo: AClass | |
After calling super at AClass.echo: AClass | |
---------- | |
Before calling super at BClass.echo: BClass | |
At SuperClass.echo: BClass | |
After calling super at BClass.echo: BClass | |
---------- | |
Before calling super at CClass.echo: CClass | |
Before calling super at AClass.echo: CClass | |
Before calling super at BClass.echo: CClass | |
At SuperClass.echo: CClass | |
After calling super at BClass.echo: CClass | |
After calling super at AClass.echo: CClass | |
After calling super at CClass.echo: CClass |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from __future__ import print_function | |
class SuperClass(object): | |
@classmethod | |
def echo(cls): | |
print('At SuperClass.echo: ', cls.__name__) | |
class AClass(SuperClass): | |
@classmethod | |
def echo(cls): | |
print('Before calling super at AClass.echo: ', cls.__name__) | |
super(AClass, cls).echo() | |
print('After calling super at AClass.echo: ', cls.__name__) | |
class BClass(SuperClass): | |
@classmethod | |
def echo(cls): | |
print('Before calling super at BClass.echo: ', cls.__name__) | |
super(BClass, cls).echo() | |
print('After calling super at BClass.echo: ', cls.__name__) | |
class CClass(AClass, BClass): | |
@classmethod | |
def echo(cls): | |
print('Before calling super at CClass.echo: ', cls.__name__) | |
super(CClass, cls).echo() | |
print('After calling super at CClass.echo: ', cls.__name__) | |
SuperClass.echo() | |
print('-' * 10) | |
AClass.echo() | |
print('-' * 10) | |
BClass.echo() | |
print('-' * 10) | |
CClass.echo() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment