📜  Python – 访问父类属性(1)

📅  最后修改于: 2023-12-03 15:04:13.549000             🧑  作者: Mango

Python – 访问父类属性

在 Python 中我们可以通过继承实现代码重用和扩展,子类可以继承父类的属性和方法。有时候,我们需要在子类中访问父类的属性,在本文中我们将介绍如何在 Python 中访问父类的属性。

方法一:使用 super() 函数

Python 中有一个内置的函数 super(),它用于调用父类的方法。通过调用父类的 __init__() 方法,我们可以访问父类的属性。下面是一个示例代码:

class Parent:
    def __init__(self):
        self.parent_property = 'Parent property'

class Child(Parent):
    def __init__(self):
        super().__init__()
        self.child_property = 'Child property'

child = Child()
print(child.parent_property)

运行结果:

Parent property

在上面的代码中,Child 类继承了 Parent 类。在 Child 类的 __init__() 方法中,我们使用 super().__init__() 调用了 Parent 类的 __init__() 方法,从而初始化了 Parent 类的 self.parent_property 属性。当我们创建 Child 类对象时,可以通过子类对象访问父类属性。

方法二:使用类名调用属性

我们还可以通过类名调用父类属性。下面是一个示例代码:

class Parent:
    parent_property = 'Parent property'

class Child(Parent):
    child_property = 'Child property'

child = Child()
print(child.__class__.parent_property)

运行结果:

Parent property

在上面的代码中,我们可以通过 child.__class__ 访问 Child 类的引用,通过 __class__.parent_property 访问 Parent 类的属性。

方法三:使用装饰器 @property

我们还可以使用装饰器 @property 将父类属性定义为只读属性,然后通过子类对象访问父类属性。

下面的代码展示了如何在 Parent 类中定义只读属性,并在 Child 类中访问父类属性:

class Parent:
    def __init__(self):
        self._parent_property = 'Parent property'

    @property
    def parent_property(self):
        return self._parent_property

class Child(Parent):
    def __init__(self):
        super().__init__()
        self.child_property = 'Child property'

child = Child()
print(child.parent_property)

运行结果:

Parent property

在上面的代码中,我们定义了一个只读属性 parent_property,并在 Child 类中访问该属性。在 Child__init__() 方法中,我们调用了 Parent__init__() 方法,从而初始化了 parent_property 的值。使用装饰器 @property,我们可以将 parent_property 声明为只读属性,然后在 Child 类中通过子类对象访问父类属性。