在大多数 Python 示例中,当 super 用于调用父类的构造函数时,它出现在顶部。
将它放在 init 方法的底部是一种不好的形式吗?
在下面的示例中,super 位于 A 的构造函数的底部,但位于 B 的构造函数的顶部。
class A:
def __init__(self):
# Do some stuff
b = result_of_complex_operation()
super(A, self).__init__(b)
class B:
def __init__(self):
super(A, self).__init__(b)
# Do some stuff
最佳答案
这完全取决于用例。考虑一下。
class Foo():
def __init__(self):
print(self.name)
@property
def name(self):
return self.__class__.__name__
class Bar(Foo):
def __init__(self, name):
self.name = name
super().__init__()
@property
def name(self):
return self.__name
@name.setter
def name(self, name):
self.__name = name
如果你在 Bar.__init__
中设置 self.name
之前调用 super()
你会得到一个 AttributeError
因为尚未设置所需的名称。
关于python - super 应该始终位于 __init__ 方法的顶部,还是可以位于底部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45722427/