30,419
社区成员
发帖
与我相关
我的任务
分享定义一个从另一个类继承所有方法和属性的类。父亲是被继承的类,称为基类。子类是从另一个类继承的类,也称为派生类。
任何类都可以是父类,因此语法与创建任何其他类相同
这里创建一个名为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)
x = Person("川川", "菜鸟")
x.printname()
结果
川川 菜鸟
创建从另一个类继承功能的类,请在创建子类时将父类作为参数发送。
例如,创建名为Student的类,它将继承该类的属性和方法Person
class student(Person):
pass
现在student类和person类有相同的属性和方法。使用student类创建对象,然后执行printname方法
class Person:
def __init__(self, fname, lname):
self.firstname = fname
self.lastname = lname
def printname(self):
print(self.firstname, self.lastname)
class Student(Person):
pass
x = Student("川川", "菜鸟")
x.printname()
结果
川川 菜鸟
python的super()函数可以让子类继承其父类的所有方法和属性
class Person:
def __init__(self, fname, lname):
self.firstname = fname
self.lastname = lname
def printname(self):
print(self.firstname, self.lastname)
class Student(Person):
def __init__(self, fname, lname):
super().__init__(fname, lname)
x = Student("川川", "菜鸟")
x.printname()
结果
川川 菜鸟
通过使用该super()函数,可以不必使用父元素的名称,自动从其父元素继承方法和属性
将一个属性调用graduationyear到student类
class Person:
def __init__(self, fname, lname):
self.firstname = fname
self.lastname = lname
def printname(self):
print(self.firstname, self.lastname)
class Student(Person):
def __init__(self, fname, lname):
super().__init__(fname, lname)
self.graduationyear = 2021
x = Student("川川", "菜鸟")
print(x.graduationyear)
结果
2021
添加一个调用welcome到student类的方法
class Person:
def __init__(self, fname, lname):
self.firstname = fname
self.lastname = lname
def printname(self):
print(self.firstname, self.lastname)
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)
x = Student("川川", "菜鸟", 2021)
x.welcome()
结果
Welcome 川川 菜鸟 to the class of 2021