我有课Base
。我想在一个类中扩展它的功能Derived
。我本来打算写:
class Derived(Base):
def __init__(self, base_arg1, base_arg2, derived_arg1, derived_arg2):
super().__init__(base_arg1, base_arg2)
# ...
def derived_method1(self):
# ...
有时我已经有一个Base
实例,我想Derived
基于它创建一个实例,即一个Derived
共享Base
对象的实例(不会从头开始重新创建它)。我想我可以写一个静态方法来做到这一点:
b = Base(arg1, arg2) # very large object, expensive to create or copy
d = Derived.from_base(b, derived_arg1, derived_arg2) # reuses existing b object
但这似乎是不可能的。要么我错过了使这项工作的方法,要么(更有可能)我错过了一个很大的原因,为什么它不能被允许工作。有人可以解释它是哪一个吗?
[当然,如果我使用组合而不是继承,这一切都很容易做到。但我希望避免所有通过的Base
方法的委托。]Derived
__getattr__