__init__()
所有类都有一个名为 __init__()
的函数,它始终在启动类时执行。使用 __init__()
函数将值赋给对象属性,或者在创建对象时需要执行的其他操作。如:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
p1 = Person("Bill", 63)
print(p1.name)
print(p1.age)
其中,self
是对类的当前实例的引用,用于访问属于该类的变量
我们在 Person 类中创建方法,完成各种功能
实例
插入一个打印问候语的函数,并在 p1 对象上执行它:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def myfunc(self):
print("Hello my name is " + self.name)
p1 = Person("Bill", 63)
p1.myfunc()
在实例化类,也就是创建对象之后,使用p.age
的方法访问属性。如果想修改属性,就有:
p1.age = 40
删除属性,就有:
del p1.age
继承允许我们定义继承另一个类的所有方法和属性的类。
父类是继承的类,也称为基类。
子类是从另一个类继承的类,也称为派生类。
实例
创建一个名为 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("Bill", "Gates")
x.printname()
然后创建继承person
的子类student
class Student(Person):
pass
pass
用于不添加方法和属性的情况,然后我们生成student类的对象
x = Student("Elon", "Musk")
x.printname()
到目前为止,我们已经创建了一个子类,它继承了父类的属性和方法。如果我们想要把 init() 函数添加到子类(而不是 pass 关键字)。
实例
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)
也可以使用super
函数,不再使用父类的名称
class Student(Person):
def __init__(self, fname, lname):
super().__init__(self, fname, lname)
当然可以在子类中添加新的方法和属性,如果方法的名字与父类的相同,则会覆盖掉父类的函数
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)