python多态与super
1、多态的概念
1)多态(Polymorphism):同名方法呈现多种行为
2、运算符的多态表现
1)+号
加法:数字+数字
拼接:字符串+字符串
合并:列表+列表
# 加法:数字+数字
print(1 + 1) # 打印 2
# 拼接:字符串+字符串
print("Hello" + "World") # 打印 Hello World
# 合并:列表+列表
print([1, 2] + [3]) # 打印 [1, 2, 3]
3、函数的多态表现
1)len()函数:返回对象(字符、列表、元组等)长度或项目个数
* 可以接收字符串
* 可以接收列表
# 参数是字符串
print(len("Hogwarts"))
# 参数是列表
print(len([1, 3, 5]))
4、方法的多态表现
同名变量调用同名方法呈现多种行为
class China:
def speak(self):
print("汉语")
class Usa:
def speak(self):
print("英语")
# 实例化对象
cn = China()
us = Usa()
for x in (cn, us):
# 同一个变量在调用同名方法时,呈现不同的行为
# 具体呈现哪种行为,由该变量所引用的对象决定
x.speak()
5、多态与继承
1)方法重写(Override):子类的方法名称与父类的相同
2)重写构造方法
super().__init__()
父类名.__init__(self)
class Human:
"""人类"""
message = "这是Human的类属性"
# 构造方法
def __init__(self, name, age):
# 实例属性
self.name = name
self.age = age
# 实例方法
def live(self):
print(f"住在地球上")
class Student(Human):
"""学生类"""
# 重写父类的构造方法
def __init__(self, name, age, school):
# 访问父类的构造方法
super().__init__(name, age)
# super(Student, self).__init__(name, age)
# Human.__init__(self, name, age)
# 子类实例属性(个性)
self.school = school
# 重写父类的实例方法
def live(self):
print(f"住在{self.school}")
# 实例化子类对象
stu = Student("哈利波特", 12, "Hogwarts")
# 访问实例方法
stu.live() # 将会打印 住在Hogwarts