Pao*_*olo 18 python oop inheritance class inner-classes
在下面的代码类B中继承yay了类的属性A,我预料到了这一点.我也期望内部类的B.Foo行为方式相同,但事实并非如此.
如何从类B.Foo继承alice属性A?我需要的是内部子类Foo中B有两个属性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'
Run Code Online (Sandbox Code Playgroud)
Pav*_*pin 14
为什么原因B.Foo.alice给你一个错误是因为有没有关系的Foo类的属性A和Foo阶级属性B.
在B,属性中Foo有一个类对象值,它完全取代了继承自的类对象值A.
这应该解决它:
class B(A):
nay = False
class Foo(A.Foo):
bob = False
Run Code Online (Sandbox Code Playgroud)
一般来说,至少在我看来,它有助于将类体内容视为具有某些赋值的属性序列.
在课堂上B,我们有:
yay具有True从A继承的值的属性nay具有价值的属性False.Foo 具有类对象的属性.类方法也是具有可调用对象作为值的属性.
继承是每类的事情.在你的代码类中B继承自类A,但仅仅因为它们都有内部类Foo并没有告诉我们它们的继承.
如果你想B.Foo拥有属性A.Foo,你需要B.Foo继承A.Foo:
class B(A):
class Foo(A.Foo):
bob = False
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7502 次 |
| 最近记录: |