【发布时间】:2015-11-02 15:48:25
【问题描述】:
我有父类Xyzzy 和一个派生类[派生自 Xyzzy]Yappy,如下所示:
class Xyzzy(object):
def __init__(self, which_factory):
self.which_factory = which_factory
@classmethod
def factory_foo(cls):
return cls('factory_foo')
@classmethod
def factory_bar(cls):
return cls('factory_bar')
class Yappy(Xyzzy):
def __init__(self, which_factory):
super(Yappy, self).__init__(which_factory)
print(which_factory)
当我打印它们时,只有 Yappy 类打印出工厂类型而不是 Xyzzy:
print(Xyzzy.factory_foo())
print(Xyzzy.factory_bar())
print('/-----------/')
print(Yappy.factory_foo())
print(Yappy.factory_bar())
我得到:
>>> Xyzzy.factory_foo()
<__main__.Xyzzy object at 0x0482F430>
>>> Xyzzy.factory_bar()
<__main__.Xyzzy object at 0x0482F430>
>>> Yappy.factory_foo()
factory_foo
<__main__.Yappy object at 0x0482F3D0>
>>> Yappy.factory_bar()
factory_bar
<__main__.Yappy object at 0x0482F3D0>
有人可以解释为什么派生类Yappy而不是父类Xyzzy打印“工厂类型”吗?
【问题讨论】:
-
您能解释一下您的预期吗?为什么不是这样?
-
@jonrsharpe 我不明白为什么“print(which_factory)”分别返回“factory_foo”和“factory_bar”。
-
...而不是 what,确切地说 - 你期待什么让你对此感到惊讶?
-
@jonrsharpe 我不知道分配给“self.which_factory”的“值”会导致“factory_foo”和“factory_bar”。
-
你从你的类方法中明确传递给
__init__的那些,也许?除了得到的结果之外,我真的不明白你为什么期望其他任何东西。
标签: python class python-3.x