繁体   English   中英

如何在子构造函数中获取父构造函数属性?

[英]How to get parent constructor attributes in child constructor?

如何从类构造函数中的父类构造函数获取属性?

class A:
    def __init__(number):
        self.number = number

class B(A):
    def __init__():
        self.number = A.number?

test = B(A)
print(test.number)

我不知道该怎么做,以免将参数传递给子类。

我认为你那里有问题。 父类/派生类的正确代码是

class A:
    def __init__(self, number):
        self.number = number

class B(A):
    def __init__(self, number):
        super().__init__(0) # Initialize parent class.
        self.number = number

# Instantiate a B object
test = B(7)
# Print the property
print(test.number)

这将始终在屏幕上产生“7”。 现在 A 和 B __init__方法都引用对象的相同“数字”属性,因此,两个类在初始化时设置相同的属性没有多大意义。 如果您将 B 的__init__方法更改为:

class B(A):
    def __init__(self, number):
        self.number = number
        super().__init__(0) # Initialize parent class.

然后print(test.number)将始终打印“0”而不是您在创建时传递的任何内容,因为您正在覆盖该属性。

典型的代码宁愿是:

class A:
    def __init__(self, number):
        self.number = number

class B(A):
    def __init__(self, number):
        super().__init__(number)

这样,派生类以有意义的方式初始化父类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM