python基础:面向对象-继承。
作者:互联网
这里写目录标题
在Python中,所有类默认继承object类,object类是顶级类或基类;其他子类叫做派生类。
一、单继承
单继承意思就是一个类同时继承了一个父类。
class Master(object):
def __init__(self):
self.kongfu='古法鸡蛋灌饼'
def cook(self):
print(f'运用{self.kongfu}做饼。')
#Student继承了Master类
class Student(Master):
pass
lihua = Student()
lihua.cook()
#运用古法鸡蛋灌饼做饼。
二、多继承
多继承意思就是一个类同时继承了多个父类。
class Master(object):
def __init__(self):
self.kongfu='古法鸡蛋灌饼'
def cook(self):
print(f'运用{self.kongfu}做饼。')
class School(object):
def __init__(self):
self.kongfu='正宗鸡蛋灌饼'
def cook(self):
print(f'运用{self.kongfu}做饼。')
#Student继承了Master类
class Student(School,Master):
pass
lihua = Student()
lihua.cook()
#运用正宗鸡蛋灌饼做饼。
当一个类有多个⽗类的时候,默认使用第一个⽗类的同名属性和⽅法。
三、子类重写父类同名方法和属性
class Master(object):
def __init__(self):
self.kongfu='古法鸡蛋灌饼'
def cook(self):
print(f'运用{self.kongfu}做饼。')
#Student继承了Master类
class Student(Master):
def __init__(self):
self.kongfu='创新鸡蛋灌饼'
def cook(self):
print(f'运用{self.kongfu}做饼。')
lihua = Student()
lihua.cook()
#运用创新鸡蛋灌饼做饼。
⼦类和父类具有同名属性和方法,默认使⽤子类的同名属性和方法。
四、多层继承
class Master(object):
def __init__(self):
self.kongfu='古法鸡蛋灌饼'
def cook(self):
print(f'运用{self.kongfu}做饼。')
class School(Master):#继承Master
def __init__(self):
self.kongfu='正宗鸡蛋灌饼'
def cook(self):
print(f'运用{self.kongfu}做饼')
class Student(School):#继承School
def __init__(self):
self.kongfu='创新鸡蛋灌饼'
def cook(self):
print(f'运用{self.kongfu}做饼')
#打印出继承顺序
print(Student.__mro__)
#(<class '__main__.Student'>, <class '__main__.School'>, <class '__main__.Master'>, <class 'object'>)
五、子类调用父类的同名方法和属性
两种方法:super();父类.初始化/再调用
class Master(object):
def __init__(self):
self.kongfu='古法鸡蛋灌饼'
def cook(self):
print(f'运用{self.kongfu}做饼。')
class School(Master):
def __init__(self):
self.kongfu='正宗鸡蛋灌饼'
def cook(self):
print(f'运用{self.kongfu}做饼')
def make_master_cook(self):
super().__init__()
super().cook()
class Student(School):
def __init__(self):
self.kongfu='创新鸡蛋灌饼'
def cook(self):
print(f'运用{self.kongfu}做饼')
def make_school_cook(self):#调用 父类
super().__init__()
super().cook()
#调用 古法鸡蛋灌饼
def make_master_cook(self):#调用 祖父类
#方法一
super().make_master_cook()
#方法二
Master.__init__(self)
Master.cook(self)
lihua = Student()
lihua.make_school_cook()#调用 父类
lihua.make_master_cook()#调用 祖父类
打印结果:
六、私有权限
1.定义私有属性和方法
属性和方法前面加上 ‘__’(两条下划线)即可。
class Master(object):
def __init__(self):
self.kongfu='古法鸡蛋灌饼'
#私有属性
self.__money = 4000
def cook(self):
print(f'运用{self.kongfu}做饼。')
#私有方法
def __make_money(self):
print(self.__money)
#Student继承了Master类
class Student(Master):
pass
lihua = Student()
print(lihua.__money)#报错
lihua.__make_money()#报错
2.获取和修改私有属性值
利用实例方法 get_XX 来获取,用 set_XX 来修改。
class Master(object):
def __init__(self):
self.kongfu='古法鸡蛋灌饼'
#私有属性
self.__money = 4000
def cook(self):
print(f'运用{self.kongfu}做饼。')
#获取私有属性值
def get_money(self):
return self.__money
#修改私有属性值
def set_money(self,new_money):
self.__money=new_money
#Student继承了Master类
class Student(Master):
pass
lihua = Student()
print(lihua.get_money())#4000
lihua.set_money(100)
print(lihua.get_money())#100
标签:__,kongfu,python,继承,面向对象,Master,cook,self,def 来源: https://blog.csdn.net/weixin_45275802/article/details/116541906