【发布时间】:2011-08-01 01:17:18
【问题描述】:
在以下代码中,类B 继承了类A 的yay 属性,这是我预料到的。我还希望内部类 B.Foo 的行为方式相同,但事实并非如此。
如何让B.Foo从类A继承alice属性?我需要B 中的内部子类Foo 同时具有alice 和bob 属性。
谢谢。
>>> class A:
... yay = True
... class Foo:
... alice = True
...
>>> class B(A):
... nay = False
... class Foo:
... bob = False
>>> B.yay
True
>>> B.Foo.alice
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: class Foo has no attribute 'alice'
【问题讨论】:
-
为什么你认为你需要内部类?我从来没有见过一种情况,他们会想到我作为解决方案。另外,显式继承有什么问题(如
class Foo(A.Foo))? -
你总是可以在没有内部类的情况下编写等效的解决方案,但有时可以很好地表达代码结构和类关系。想象一个集合和一个迭代器——内部类使用的经典示例(尽管更面向 C++)。
标签: python oop class inheritance inner-classes