一、继承Ⅰ
class A():
def __init__(self):
self.num = 234
def info_print(self):
print(self.num)
class B(A):
pass
b = B()
print(b.info_print())
print('======================')
b.info_print()
二、继承Ⅱ
class Master():
def __init__(self):
self.kongfu = '咏春拳'
def make_cake(self):
print(f'用{self.kongfu}打擂台')
class Prentice(Master):
pass
prentice = Prentice()
print(prentice.kongfu)
prentice.make_cake()
三、多继承
class Master(object):
def __init__(self):
self.kongfu = "九阴白骨爪"
def fight(self):
print(f'运用{self.kongfu}打遍天下无敌手')
class School(object):
def __init__(self):
self.kongfu = "降龙十八掌"
def fight(self):
print(f'一套{self.kongfu}战胜了九阴白骨爪')
class Prentice(School, Master):
pass
prentice = Prentice()
print(prentice.kongfu)
prentice.fight()
四、重写
class Master(object):
def __init__(self):
self.kongfu = "九阴白骨爪"
def fight(self):
print(f'运用{self.kongfu}打遍天下无敌手')
class School(object):
def __init__(self):
self.kongfu = "降龙十八掌"
def fight(self):
print(f'一套{self.kongfu}战胜了九阴白骨爪')
class Prentice(School, Master):
def __init__(self):
super().__init__()
self.kongfu = "进阶式九阴白骨爪"
def fight(self):
print(f'运用进阶式{self.kongfu}打败了九阴白骨爪和降龙十八掌')
prentice = Prentice()
print(prentice.kongfu)
prentice.fight()
print(Prentice.__mro__)
五、重写调用
class Master(object):
def __init__(self):
self.kongfu = "九阴白骨爪"
def fight(self):
print(f'展示{self.kongfu}打遍天下无敌手')
class School(object):
def __init__(self):
self.kongfu = "降龙十八掌"
def fight(self):
print(f'一套{self.kongfu}战胜了九阴白骨爪')
class Prentice(School, Master):
def __init__(self):
self.kongfu = "独孤九剑"
def fight(self):
self.__init__()
print(f'使用{self.kongfu}打败了九阴白骨爪和降龙十八掌')
def prent_master(self):
Master.__init__(self)
Master.fight(self)
def prent_school(self):
School.__init__(self)
School.fight(self)
prentice = Prentice()
print(prentice.kongfu)
prentice.fight()
prentice.prent_master()
prentice.prent_school()
prentice.fight()
六、多层继承
class Master(object):
def __init__(self):
self.kongfu = "九阴白骨爪"
def fight(self):
print(f'展示{self.kongfu}打遍天下无敌手')
class School(object):
def __init__(self):
self.kongfu = "降龙十八掌"
def fight(self):
print(f'一套{self.kongfu}战胜了九阴白骨爪')
class Prentice(School, Master):
def __init__(self):
self.kongfu = "独孤九剑"
def fight(self):
self.__init__()
print(f'使用{self.kongfu}打败了九阴白骨爪和降龙十八掌')
def prent_master(self):
Master.__init__(self)
Master.fight(self)
def prent_school(self):
School.__init__(self)
School.fight(self)
class Tusun(Prentice):
pass
tusun = Tusun()
print(tusun.kongfu)
tusun.fight()
tusun.prent_master()
tusun.prent_school()
print(Prentice.__mro__)
七、super方法
class Master(object):
def __init__(self):
self.kongfu = "爷爷类"
def fight(self):
print(f'这是{self.kongfu}方法')
class School(Master):
def __init__(self):
super().__init__()
self.kongfu = "父类"
def fight(self):
print(f'这是{self.kongfu}方法')
def father_class(self):
super(School, self).__init__()
super(School, self).fight()
def father_class02(self):
super().__init__()
super().fight()
class Prentice(School):
def __init__(self):
super().__init__()
self.kongfu = "子类"
def fight(self):
self.__init__()
print(f'这是{self.kongfu}方法')
def father_class(self):
Master.__init__(self)
Master.fight(self)
School.__init__(self)
School.fight(self)
def father_class02(self):
super(Prentice, self).__init__()
super(Prentice, self).fight()
def father_class03(self):
super().__init__()
super().fight()
xiaoqiu = Prentice()
xiaoqiu.fight()
print("=========================================")
xiaoqiu.father_class03()
print("=========================================")
school = School()
school.father_class02()
八、私有权限
class Teacher(object):
def __init__(self):
self.course = "语文"
self.__wage = 6000
def skill(self):
print(f'父类是教{self.course}的')
def __info__salary(self):
print(f'老师的工资是{self.__wage}')
class Student(Teacher):
def __init__(self):
super().__init__()
self.subject = "数学和语文"
def skill(self):
print(f'子类是学{self.subject}的')
student = Student()
print(student.subject)
print(student.course)
print(student.__wage)
student.__info__salary
九、修改私有属性
class Teacher(object):
def __init__(self):
self.course = "语文"
self.__wage = 6000
def get_wage(self):
return self.__wage
def set_wage(self, num):
self.__wage = num
def __info__salary(self):
print(f'老师的工资是{self.__wage}')
def skill(self):
print(f'父类是教{self.course}的')
class Student(Teacher):
def __init__(self):
super().__init__()
self.subject = "数学和语文"
def skill(self):
print(f'子类是学{self.subject}的')
student = Student()
print(student.course)
student.skill()
print("=======================================")
teacher = Teacher()
print(f'获取当前老师的工资:{teacher.get_wage()}')
teacher.set_wage(5200)
print(f'获取修改后的老师的工资:{teacher.get_wage()}')
十、类方法
class Abc(object):
__tooth = 10
@classmethod
def get_tooth(cls):
return cls.__tooth
abc = Abc()
print(abc.get_tooth())
十一、静态方法
class Dog(object):
@staticmethod
def info_print():
print("这是一个静态方法")
dog = Dog()
print(dog.info_print())
print(Dog.info_print())