📅  最后修改于: 2023-12-03 15:04:13.549000             🧑  作者: Mango
在 Python 中我们可以通过继承实现代码重用和扩展,子类可以继承父类的属性和方法。有时候,我们需要在子类中访问父类的属性,在本文中我们将介绍如何在 Python 中访问父类的属性。
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
将父类属性定义为只读属性,然后通过子类对象访问父类属性。
下面的代码展示了如何在 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
类中通过子类对象访问父类属性。