Python 继承

版权所有,未经许可,禁止转载


章节


Python 继承

继承允许我们在定义一个类时,让该类继承另一个类的所有方法和属性。

父类是被继承的类,也称为基类。

子类是继承父类的类,也称为派生类。

创建父类

任何类都可以是父类,创建父类的语法和创建普通类是一样的:

示例

创建一个名为Person的类,包含属性:firstnamelastname, 方法: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("Kevin", "Wu")
x.printname()

创建子类

要创建子类,需将父类作为参数传入:

示例

创建一个名为Student的类,它将继承Person类的属性和方法:

class Student(Person):
  pass

注意: 当您不想给类添加任何属性或方法时,使用pass关键字。

现在Student类具有与Person类相同的属性和方法。

示例

使用Student类创建对象,然后执行printname方法:

x = Student("Kevin", "Tony")
x.printname()

添加__init__()函数

到目前为止,我们已经创建了一个子类,它继承了父类的属性和方法。

现在将__init__()函数添加到子类(不再使用pass关键字)。

注意: 每当创建新对象时,都会自动调用类的__init__()函数。

示例

__init__()函数添加到Student类:

class Student(Person):
  def __init__(self, fname, lname):
    # 添加属性

当您添加了__init__()函数后,子类将不再继承父类的__init__()函数。

注意: 子函数的__init__()重写父函数的__init__()

要保留父类的__init__()函数的功能,可在子类的__init__()函数中调用父类的__init__()函数:

示例

class Student(Person):
  def __init__(self, fname, lname):
    Person.__init__(self, fname, lname)

现在,我们已经给子类添加了__init__()函数,并调用了父类的__init__()函数,下面我们将在__init__()函数中添加其他功能。

添加属性

示例

Student类中添加一个关于毕业年份的属性:

class Student(Person):
  def __init__(self, fname, lname):
    Person.__init__(self, fname, lname)
    self.graduationyear = 2019

2019年应该是一个变量,并在创建学生对象时传递给Student类。为此,在__init__()函数中添加另一个year参数:

示例

添加一个year参数,创建对象时传入毕业年份:

class Student(Person):
  def __init__(self, fname, lname, year):
    Person.__init__(self, fname, lname)
    self.graduationyear = year

x = Student("Kevin", "Tony", 2019)

加入方法

示例

Student类中添加一个名为welcome的方法:

class Student(Person):
  def __init__(self, fname, lname, year):
    Person.__init__(self, fname, lname)
    self.graduationyear = year
    
  def welcome(self):
    print("Welcome", self.firstname, self.lastname, "to the class of", self.graduationyear)

如果在子类中添加父类中的同名方法,则父类的方法将被重写。

posted @ 2019-08-21 11:04  吴吃辣  阅读(415)  评论(0编辑  收藏  举报