Python 中访问父类属性
要访问子类中的父类属性:
-
使用
super()
方法在 child 中调用 parent 的构造函数。 -
__init__()
方法将设置实例变量。 -
访问
self
对象上的任何父类的属性或方法。
class Employee():
cls_id = 'emp-cls'
def __init__(self, name):
self.salary = 100
self.name = name
class Developer(Employee):
def __init__(self, name):
# 👇️ invoke parent __init__() method
super().__init__(name)
# 👇️ accessing parent instance variable
print(self.salary) # 👉️ 100
# 👇️ accessing parent class variable
print(self.cls_id) # 👉️ emp-cls
d1 = Developer('jiyik')
print(d1.salary) # 👉️ 100
print(d1.cls_id) # 👉️ 'emp-cls'
上述代码运行结果如下:
代码片段显示了如何从子类访问父类变量和父实例变量。
cls_id
属性是一个类变量。
可以直接在子实例或子类本身上访问类变量。
class Employee():
cls_id = 'emp-cls'
class Developer(Employee):
def __init__(self, name):
# 👇️ 获取父类变量
print(self.cls_id) # 👉️ emp-cls
d1 = Developer('bobbyhadz')
print(d1.cls_id) # 👉️ 'emp-cls'
print(Developer.cls_id) # 👉️ 'emp-cls'
要访问父实例变量,请调用类的构造方法来运行父类的 __init__()
方法中的代码。
class Employee():
def __init__(self, name):
self.salary = 100
self.name = name
class Developer(Employee):
def __init__(self, name):
# 👇️ call parent __init__() method
super().__init__(name)
print(self.salary) # 👉️ 100
d1 = Developer('jiyik')
print(d1.salary) # 👉️ 100
super()
方法使我们无需显式引用即可访问基类。
我们可以用 Employee 替换对 super()
的调用以达到相同的结果。
class Employee():
def __init__(self, name):
self.salary = 100
self.name = name
class Developer(Employee):
def __init__(self, name):
Employee.__init__(self, name)
print(self.salary) # 👉️ 100
d1 = Developer('jiyik')
print(d1.salary) # 👉️ 100
但是,与显式引用基类相比,super()
更灵活且更常用。
对父级的 __init__
方法的调用运行该方法并将薪水和姓名属性分配给实例。
现在我们可以在子类的实例上访问父类的 salary 和 name 属性。
示例中的类假定需要一个名称参数。
这是相同的示例,但在实例化子类时没有传递任何参数。
**class Employee():
def __init__(self):
self.salary = 100
class Developer(Employee):
def __init__(self):
super().__init__()
print(self.salary) # 👉️ 100
d1 = Developer()
print(d1.salary) # 👉️ 100
一旦父级的 __init__()
方法中的代码运行,实例就会被分配一个 salary 属性,可以在 self 对象上访问该属性。
我们可以使用相同的方法从子类访问父类中定义的方法。
class Employee():
def __init__(self, name):
self.salary = 100
self.name = name
def greet(self):
print(f'Hello {self.name}')
class Developer(Employee):
def __init__(self, name):
super().__init__(name)
print(self.salary) # 👉️ 100
self.greet() # 👉️ Hello bobbyhadz
d1 = Developer('jiyik')
print(d1.salary) # 👉️ 100
d1.greet() # 👉️ Hello jiyik
父对象定义了一个 greet()
方法,子实例可以通过 self 对象访问该方法。
相关文章
Python for 循环中的下一项
发布时间:2023/04/26 浏览次数:179 分类:Python
-
本文讨论了 Python 中的 for 循环以及如何通过使用 for 循环和示例来跳过列表的第一个元素。
Python While 循环用户输入
发布时间:2023/04/26 浏览次数:148 分类:Python
-
我们可以在 while 循环中使用 input() 函数来输入数据,直到在 Python 中满足某个条件。
在 Python 中将整数转换为罗马数字
发布时间:2023/04/26 浏览次数:87 分类:Python
-
本篇文章将介绍在 Python 中将整数转换为罗马数字。以下是一个 Python 程序的实现,它将给定的整数转换为其等效的罗马数字。
在 Python 中将罗马数字转换为整数
发布时间:2023/04/26 浏览次数:144 分类:Python
-
本文讨论如何在 Python 中将罗马数字转换为整数。 我们将使用 Python if 语句来执行此操作。 我们还将探讨在 Python 中将罗马数字更改为整数的更多方法。
在 Python 中读取 gzip 文件
发布时间:2023/04/26 浏览次数:70 分类:Python
-
本篇文章强调了压缩文件的重要性,并演示了如何在 Python 中使用 gzip 进行压缩和解压缩。
在 Python 中锁定文件
发布时间:2023/04/26 浏览次数:141 分类:Python
-
本文解释了为什么在 Python 中锁定文件很重要。 这讨论了当两个进程在没有锁的情况下与共享资源交互时会发生什么的示例,为什么在放置锁之前知道文件状态很重要,等等
在 Python 中将 PDF 转换为文本
发布时间:2023/04/26 浏览次数:196 分类:Python
-
在本教程中,我们将学习如何使用 Python 使用 PyPDF2、Aspose 和 PDFminer 将 PDF 文档转换为文本文件。
在 Python 中创建临时文件
发布时间:2023/04/26 浏览次数:53 分类:Python
-
本文讲解了tempfile库函数的四个子函数:TemporaryFile、NamedTemporaryFile、mkstemp、TemporaryDirectory。 每个部分都提供了适当的程序,以简化对概念的理解。