Python是一种解释型的、面向对象的、带有动态语义的高级程序设计语言,本节主要总结Python入门类继承和方法重载:继承,多继承,方法重写
继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(例图,Dog是一个Animal)。派生类的定义如下:
class DerivedClassName(BaseClassName1):
注:圆括号中基类的顺序,若是基类中有相同的方法名,而在子类使用时未指定,python从左至右搜索 即方法在子类中未找到时,从左到右查找基类中是否包含方法。
class People: # 类变量 公共变量 name = '' age = 0 sex = '男' # 类变量 私有变量 __site = 'www.xiaowangyun.com' # 构造函数 专有函数 def __init__(self, name, age, sex): self.name = name self.age = age self.sex = sex # 公共函数获取私有变量 def get_site(self): print('site:', self.__site) # 公共函数speak def speak(self): print('name:', self.name, ' age:', self.age, ' sex:', self.sex) # 私有函数speak def __speak(self): print('name:', self.name, ' age:', self.age, ' sex:', self.sex) class Student(People): school = '' grade = '' # 派生类的构造函数 def __init__(self, name, age, sex, school, grade): # 调用父类构造函数 People.__init__(self, name, age, sex) self.school = school self.grade = grade # 重写父类speak方法 def speak(self): print('I am a student. ', 'name:', self.name, ' age:', self.age, ' sex:', self.sex) # 实例化 xwy = Student('小望云', 2, '女', 'CUMT', '88') xwy.speak() xwy.get_site() print(xwy.name)
输出
I am a student. name: 小望云 age: 2 sex: 女
site: www.xiaowangyun.com
小望云
注:1)派生类可以重写父类方法
2)派生类可以通过父类的公共方法访问父类的私有变量
接上面代码,继续完成多继承Demo
# Speaker 类 class Speaker(): topic = '' name = '' def __init__(self, name, topic): self.name = name self.topic = topic # StudentSpeaker 学生演说家 继承Speaker和Student类 class StudentSpeaker(Speaker, Student): temp = '' def __init__(self, name, temp, age, sex, topic, school, grade): Student.__init__(self, name, age, sex, school, grade) Speaker.__init__(self, name, topic) ss = StudentSpeaker('小望云', '小望云', 2, '女', 'Python入门', 'CUMT', '88') ss.speak()
注:若是基类中有相同的方法名,而在子类使用时未指定,python从左至右搜索 即方法在子类中未找到时,从左到右查找基类中是否包含方法。如:上面ss.speak()调用Speaker父类的方法
__init__ : 构造函数,在生成对象时调用
__del__ : 析构函数,释放对象时使用
__repr__ : 打印,转换
__setitem__ : 按照索引赋值
__getitem__: 按照索引获取值
__len__: 获得长度
__cmp__: 比较运算
__call__: 函数调用
__add__: 加运算
__sub__: 减运算
__mul__: 乘运算
__truediv__: 除运算
__mod__: 求余运算
__pow__: 乘方
注:方法名前后均有两个下划线(_)
编辑:孙小北
本文地址: https://www.xiaowangyun.com/wyblog/detail/?id=1027
版权归属: www.xiaowangyun.com 转载时请以链接形式注明出处
0 条评论