我有一个类Parent
:
class Parent:
def __init__(self, foo):
self.foo = foo
然后我有另一个类Child
,它扩展了Parent
。但是我希望Child
获取一个预先存在的parent
实例,并将其用作要从中继承的父实例(而不是使用相同的构造函数参数创建一个新的Parent
实例)
class Child(Parent):
def __init__(self, parent_instance):
""" Do something with parent_instance to set this as the parent instance """
def get_foo(self):
return self.foo
那么我最好能做到:
p = Parent("bar")
c = Child(p)
print(c.get_foo()) # prints "bar"
您可以将父母的
__dict__
内容复制到孩子的。您可以使用vars()
内置函数和字典的update()
方法来执行此操作我不确定继承是否是正确的解决方案,因为它破坏了
__init__
方法中的LSP也许父母和孩子只是共享一个共同的界面。 我更喜欢(Python3.8)这样的东西:
关键的一点是,它利用了具有公共接口
FoeAware
的多态性,这比继承树更好您可以使用自己的构造函数-提供一个类方法,该类方法接受父类的实例
相关问题 更多 >
编程相关推荐