//父类
class Person(object):
def __init__(self):
self.name = "张三"
self.age = 30
def showInfo(self):
print(self.name)
print(self.age)
// 子类继承Person类
class Student(Person):
def __init__(self):
self.name = "李四"
self.age = 20
def showInfo(self):
print(self.name)
print(self.age)
def __str__(self):
return "这是Student类的对象"
//子类调用父类同名属性和方法
def FuInfo(self):
Person.__init__(self) //大家先想想这行代码的作用
print(self) //该行代码就是为了判断self是否为Student类的对象
Person.showInfo(self)
s = Student()
s.FuInfo()
上面的代码是一个很简单的单继承,然后就是采用魔法方法__init__()来初始化属性,并通过shoeInfo()函数来打印属性
相信大家都看得懂,那么红色字体的代码为什么要有呢,不要可不可以呢
现在就这个来说明一下:
父类中的属性是“name = "张三",age = 30”,而子类的属性为“name = "李四", age = 20”.假设没有红色那行代码,直接通过Person.showInfo(self)得到的是子类的属性,因为self表示的是调用该函数的对象,即是对象s,而对象s的属性为“name = "李四", age = 20”。所以没有红色那行代码的话得到的结果就是子类的。
有了红色那行代码之后,将self的属性通过Person的__init__()重新初始化为“name = "张三",age = 30”,随后采用Person.showInfo(self)得到的就是父类中的属性值了
总的来说:红色代码的作用就是将对象s的属性值修改为父类的属性值