lin*_*bin 2 python inheritance super
class MyObject1(object):
def __init__(self):
super(MyObject1, self).__init__()
pass
class MyObject2(object):
def __init__(self, arg):
super(MyObject2, self).__init__()
pass
Run Code Online (Sandbox Code Playgroud)
我读过这样的python27代码,
我知道“超级”是指父类构造函数,
但我不明白为什么这两个类称自己为'构造函数' __init__',
好像没什么实际效果。
这些是 Python 中一些非常基本的 OO 方法。在这里阅读。
super并且self是相似的:
super() 可让您避免显式引用基类,这很好。但主要优点是多重继承,各种有趣的事情都可能发生。如果您还没有,请参阅 super 上的标准文档。
(来自这个答案)
下面是一个super在行动的例子:
class Animal(object):
def __init__(self, speed, is_mammal):
self.speed = speed
self.is_mammal = is_mammal
class Cat(Animal):
def __init__(self, is_hungry):
super().__init__(10, True)
self.is_hungry = is_hungry
barry = Cat(True)
print(f"speed: {barry.speed}")
print(f"is a mammal: {barry.is_mammal}")
print(f"feed the cat?: {barry.is_hungry}")
Run Code Online (Sandbox Code Playgroud)
可以看到,它super正在调用基类(当前类继承的类),后跟一个访问修饰符,访问基类的.__init__()方法。就像self,但是对于基类。
| 归档时间: |
|
| 查看次数: |
11725 次 |
| 最近记录: |