如果我在一个类中编写一个类,它们都使用相同的方法,即:
class Master:
def calculate(self):
variable = 5
return variable
class Child:
def calculate(self):
variable = 5
return variable
我是否必须在两个类中声明此方法,或者我是否只能在Master中声明它,然后在Child中使用它?
答案 0 :(得分:4)
将一个类嵌套在另一个类中除了嵌套类成为外部类的属性之外没有其他效果。他们没有其他关系。
换句话说,Child
是一个可以作为Master.Child
而不仅仅是Child
来解决的类。 Master
的实例可以解决self.Child
,它是对同一个类的引用。这就是关系结束的地方。
如果要在两个类之间共享方法,请使用继承:
class SharedMethods:
def calculate(self):
variable = 5
return variable
class Master(SharedMethods):
pass
class Child(SharedMethods):
pass
此处Master
和Child
现在都有calculate
方法。
由于Python支持多重继承,因此创建这样的mixin类来共享方法相对轻松,并且不排除使用其他类来表示is-a关系。
将包含关系留给实例;提供Master
child
个属性并将其设置为Child
个实例。