python类相关,super调用父类被重写的方法
简单的小实例:
# -*- coding: utf-8 -*-
class Person:
def __init__(self,name):
self.name=name
self.email="frosttry@gmail.com"
def f(self):
print("Person f",self.name)
class Girl(Person):
'''Girl继承了Person类'''
def __init__(self,height):
self.height=height
def f(self):
print(self.name,self.email,self.height)
class Girl2(Person):
'''Girl继承Person类,并通过super()初始化继承的成员'''
def __init__(self,name,height):
super(Girl2,self).__init__(name)
self.height=height
def f(self):
super(Girl2,self).f()
print("Girl2 f",self.name,self.email,self.height)
if __name__=="__main__":
p1=Person("asd")
print(p1.name)
print(p1.email)
'''p2=Person("asdf","123@123") 报错,无法通过传参初始化email属性'''
g1=Girl(100)
'''
g1.f() 调用报错,因为__init__()方法被覆盖,Girl无法继承属性name,email
print(g1.email) 因为__init__()方法被覆盖,Girl无法继承属性name,email 'Girl',执行报错 object has no attribute 'email'
'''
g2=Girl2("girl2",100)
g2.f()
运行结果:
asd
frosttry@gmail.com
Person f girl2
Girl2 f girl2 frosttry@gmail.com 100