[英]Initializing a Subclass Instance from a Superclass Object
logging.Logger
的文档指出:
请注意,永远不会直接实例化Logger,而是始终通过模块级函数logging.getLogger(name)实例化。
这引出了以下问题(由于我想一般地询问该原理,因此我将切换到一些Foo
类而不是logging.Logger
)。
假设有一些Foo
类,具有几个属性和方法:
class Foo:
def method_0(self..):
...
def method_1(self..):
...
def method_n(self..):
...
我想对Foo
进行子类化,并且仅专门研究其中的几种方法。
class SubFoo(Foo):
def method_1(self, ...):
...
# Or super - not the point of the question.
Foo.method_1(self, ...)
...
问题在于Foo
没有可用的构造函数,而只有通过getFoo
来创建Foo
类型的对象的getFoo
。 SubFoo
的“ Foo
”部分需要是“批准的” Foo
对象,并且我不知道如何强制将SubFoo
的Foo
部件设置为“批准的”对象。
注意
显然,有几种解决方法可以将Foo
子类化,例如,构图,猴子补丁,使用__dict__
/ gettatr
聪明游戏等。尽管如此,这个问题还是关于子类化的。
您对继承有误解。 要创建SubFoo的实例,只需像实例任何其他类一样将其实例化即可: SubFoo()
。
Python没有构造函数,在任何情况下,未在子类上定义的方法将自动继承超类版本,而无需执行任何操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.