Python 继承
Python 继承
继承允许我们定义一个类,该类继承另一个类的所有方法和属性。
父类是继承的类,也称为基类。
子类是继承另一个类的类,也称为派生类。
创建父类
任何类都可以是父类,因此语法与创建其他类相同
示例
创建一个名为 Person
的类,具有 firstname
和 lastname
属性以及一个 printname
方法
class Person
def __init__(self, fname, lname)
self.firstname = fname
self.lastname = lname
def printname(self)
print(self.firstname, self.lastname)
#使用 Person 类创建一个对象,然后执行 printname 方法
x = Person("John", "Doe")
x.printname()
自己尝试一下 »
创建子类
要创建继承另一个类功能的类,请在创建子类时将父类作为参数发送
示例
创建一个名为 Student
的类,它将继承 Person
类的属性和方法
class Student(Person)
pass
注意: 当您不想向类添加任何其他属性或方法时,请使用 pass
关键字。
现在 Student 类具有与 Person 类相同的属性和方法。
添加 __init__() 函数
到目前为止,我们创建了一个子类,它继承了其父类的属性和方法。
我们想要将 __init__()
函数添加到子类(而不是 pass
关键字)。
注意: 每当使用类创建新对象时,都会自动调用 __init__()
函数。
示例
将 __init__()
函数添加到 Student
类
class Student(Person)
def __init__(self, fname, lname)
# 添加属性等
当您添加 __init__()
函数时,子类将不再继承父类的 __init__()
函数。
注意: 子类的 __init__()
函数覆盖了父类的 __init__()
函数的继承。
要保留父类 __init__()
函数的继承,请添加对父类 __init__()
函数的调用
示例
class Student(Person)
def __init__(self, fname, lname)
Person.__init__(self, fname, lname)
自己尝试一下 »
现在我们已成功添加了 __init__() 函数,并保留了父类的继承,我们已准备好向 __init__()
函数中添加功能。
使用 super() 函数
Python 还具有一个 super()
函数,它将使子类继承其父类的所有方法和属性
通过使用 super()
函数,您不必使用父元素的名称,它将自动继承其父类的所有方法和属性。
添加属性
示例
向 Student
类添加一个名为 graduationyear
的属性
class Student(Person)
def __init__(self, fname, lname)
super().__init__(fname, lname)
self.graduationyear = 2019
自己尝试一下 »
在下面的示例中,年份 2019
应该是一个变量,并在创建学生对象时传递到 Student
类中。为此,请在 __init__() 函数中添加另一个参数
示例
添加一个 year
参数,并在创建对象时传递正确的年份
class Student(Person)
def __init__(self, fname, lname, year)
super().__init__(fname, lname)
self.graduationyear = year
x = Student("Mike", "Olsen", 2019)
自己尝试一下 »
添加方法
示例
向 Student
类添加一个名为 welcome
的方法
class Student(Person)
def __init__(self, fname, lname, year)
super().__init__(fname, lname)
self.graduationyear = year
def welcome(self)
print("Welcome", self.firstname, self.lastname, "to the class of", self.graduationyear)
自己尝试一下 »
如果您在子类中添加了一个与父类中的函数同名的函数,那么父类方法的继承将被覆盖。