目标: 定义init魔法方法设置初始化属性 并访问调用
“”"
- 定义类
init魔法方法: width 和 height
添加实例方法:访问实例属性
-
创建对象
-
验证成果
调用实例方法
“”"
class Washer():
def init(self):
添加实例属性
self.width = 500
self.height = 800
def print_info(self):
print(f’洗衣机的宽度是{self.width}')
print(f’洗衣机的高度是{self.height}')
haier = Washer()
haier.print_info()
1. 定义类:带参数的init:宽度和高度; 实例方法:调用实例属性
class Washer():
def init(self, width, height):
self.width = width
self.height = height
def print_info(self):
print(f’洗衣机的宽度是{self.width}, 洗衣机的高度是{self.height}')
2. 创建对象,创建多个对象且属性值不同;调用实例方法
haier1 = Washer(10, 20)
haier1.print_info()
haier2 = Washer(100, 200)
haier2.print_info()
class Washer():
def init(self):
self.width = 300
def str(self):
return ‘解释说明:类的说明或对象状态的说明’
haier = Washer()
print(haier)
class Washer():
def init(self):
self.width = 300
def del(self):
print(‘对象已经删除’)
haier = Washer()
1.现实中的继承
2.程序中的继承
继承:子类默认继承父类的所有属性和方法
1. 定义父类
class A(object):
def init(self):
self.num = 1
def info_print(self):
print(self.num)
2. 定义子类 继承父类
class B(A):
pass
3. 创建对象,验证结论
result = B()
result.info_print()
1. 师父类,属性和方法
class Master(object):
def init(self):
self.kongfu = ‘[古法煎饼果子配方]’
def make_cake(self):
print(f’运用{self.kongfu}制作煎饼果子’)
2. 定义徒弟类,继承师父类
class Prentice(Master):
pass
3. 用徒弟类创建对象,调用实例属性和方法
daqiu = Prentice()
print(daqiu.kongfu)
daqiu.make_cake()
1. 师父类,属性和方法
class Master(object):
def init(self):
self.kongfu = ‘[古法煎饼果子配方]’
def make_cake(self):
print(f’运用{self.kongfu}制作煎饼果子’)
为了验证多继承,添加School父类
class School(object):
def init(self):
self.kongfu = ‘[黑马煎饼果子配方]’
def make_cake(self):
print(f’运用{self.kongfu}制作煎饼果子’)
2. 定义徒弟类,继承师父类 和 学校类
class Prentice(School, Master):
pass
3. 用徒弟类创建对象,调用实例属性和方法
daqiu = Prentice()
print(daqiu.kongfu)
daqiu.make_cake()
结论:如果一个类继承多个父类,优先继承第一个父类的同名属性和方法
1. 师父类,属性和方法
class Master(object):
def init(self):
self.kongfu = ‘[古法煎饼果子配方]’
def make_cake(self):
print(f’运用{self.kongfu}制作煎饼果子’)
为了验证多继承,添加School父类
class School(object):
def init(self):
self.kongfu = ‘[黑马煎饼果子配方]’
def make_cake(self):
print(f’运用{self.kongfu}制作煎饼果子’)
2. 定义徒弟类,继承师父类 和 学校类, 添加和父类同名的属性和方法
class Prentice(School, Master):
def init(self):
self.kongfu = ‘[独创煎饼果子技术]’
def make_cake(self):
print(f’运用{self.kongfu}制作煎饼果子’)
3. 用徒弟类创建对象,调用实例属性和方法
daqiu = Prentice()
print(daqiu.kongfu)
daqiu.make_cake()
结论:如果子类和父类拥有同名属性和方法,子类创建对象调用属性和方法的时候,调用到的是子类里面的同名属性和方法
1. 师父类,属性和方法
class Master(object):
def init(self):
self.kongfu = ‘[古法煎饼果子配方]’
def make_cake(self):
print(f’运用{self.kongfu}制作煎饼果子’)
2. 定义徒弟类,继承师父类 和 学校类, 添加和父类同名的属性和方法
class Prentice(Master):
def init(self):
self.kongfu = ‘[独创煎饼果子技术]’
def make_cake(self):
print(f’运用{self.kongfu}制作煎饼果子’)
3. 用徒弟类创建对象,调用实例属性和方法
daqiu = Prentice()
print(daqiu.kongfu)
daqiu.make_cake()
print(Prentice.mro)
1. 师父类,属性和方法
class Master(object):
def init(self):
self.kongfu = ‘[古法煎饼果子配方]’
def make_cake(self):
print(f’运用{self.kongfu}制作煎饼果子’)
为了验证多继承,添加School父类
class School(object):
def init(self):
self.kongfu = ‘[黑马煎饼果子配方]’
def make_cake(self):
print(f’运用{self.kongfu}制作煎饼果子’)
2. 定义徒弟类,继承师父类 和 学校类, 添加和父类同名的属性和方法
class Prentice(School, Master):
def init(self):
self.kongfu = ‘[独创煎饼果子技术]’
def make_cake(self):
加自己的初始化的原因:如果不加这个自己的初始化,kongfu属性值是上一次调用的init内的kongfu属性值
self.init()
print(f’运用{self.kongfu}制作煎饼果子’)
子类调用父类的同名方法和属性:把父类的同名属性和方法再次封装
def make_master_cake(self):
父类类名.函数()
再次调用初始化的原因:这里想要调用父类的同名方法和属性,属性在init初始化位置,所以需要再次调用init
Master.init(self)
Master.make_cake(self)
def make_school_cake(self):
School.init(self)
School.make_cake(self)
3. 用徒弟类创建对象,调用实例属性和方法
daqiu = Prentice()
daqiu.make_cake()
daqiu.make_master_cake()
daqiu.make_school_cake()
daqiu.make_cake()
1. 师父类,属性和方法
class Master(object):
def init(self):
self.kongfu = ‘[古法煎饼果子配方]’
def make_cake(self):
print(f’运用{self.kongfu}制作煎饼果子’)
为了验证多继承,添加School父类
class School(object):
def init(self):
self.kongfu = ‘[黑马煎饼果子配方]’
def make_cake(self):
print(f’运用{self.kongfu}制作煎饼果子’)
2. 定义徒弟类,继承师父类 和 学校类, 添加和父类同名的属性和方法
class Prentice(School, Master):
def init(self):
self.kongfu = ‘[独创煎饼果子技术]’
def make_cake(self):
self.init()
print(f’运用{self.kongfu}制作煎饼果子’)
子类调用父类的同名方法和属性:把父类的同名属性和方法再次封装
def make_master_cake(self):
Master.init(self)
Master.make_cake(self)
def make_school_cake(self):
School.init(self)
School.make_cake(self)
步骤:1. 创建类Tusun, 用这个类创建对象;2. 用这个对象调用父类的属性或方法看能否成功
class Tusun(Prentice):
pass
xiaoqiu = Tusun()
xiaoqiu.make_cake()
xiaoqiu.make_master_cake()
xiaoqiu.make_school_cake()
class Master(object):
def init(self):
self.kongfu = ‘[古法煎饼果子配方]’
def make_cake(self):
print(f’运用{self.kongfu}制作煎饼果子’)
class School(Master):
def init(self):
self.kongfu = ‘[黑马煎饼果子配方]’
def make_cake(self):
print(f’运用{self.kongfu}制作煎饼果子’)
2.1 super()带参数写法
super(School, self).init()
super(School, self).make_cake()
2.2 无参数的super
super().init()
super().make_cake()
class Prentice(School):
def init(self):
self.kongfu = ‘[独创煎饼果子技术]’
def make_cake(self):
self.init()
print(f’运用{self.kongfu}制作煎饼果子’)
子类调用父类的同名方法和属性:把父类的同名属性和方法再次封装
def make_master_cake(self):
Master.init(self)
Master.make_cake(self)
def make_school_cake(self):
School.init(self)
School.make_cake(self)
需求:一次性调用父类School Master的方法
def make_old_cake(self):
方法一:如果定义的类名修改,这里也要修改,麻烦; 代码量庞大,冗余
School.init(self)
School.make_cake(self)
Master.init(self)
Master.make_cake(self)
方法二:super()
2.1 super(当前类名, self).函数()
super(Prentice, self).init()
super(Prentice, self).make_cake()
2.2 无参数super
super().init()
super().make_cake()
daqiu = Prentice()
daqiu.make_old_cake()
class Master(object):
def init(self):
self.kongfu = ‘[古法煎饼果子配方]’
def make_cake(self):
print(f’运用{self.kongfu}制作煎饼果子’)
class School(object):
def init(self):
self.kongfu = ‘[黑马煎饼果子配方]’
def make_cake(self):
print(f’运用{self.kongfu}制作煎饼果子’)
class Prentice(School, Master):
def init(self):
self.kongfu = ‘[独创煎饼果子技术]’
self.money = 2000000
定义私有属性
self.__money = 2000000
定义私有方法
def __info_print(self):
print(‘这是私有方法’)
def make_cake(self):
self.init()
print(f’运用{self.kongfu}制作煎饼果子’)
def make_master_cake(self):
Master.init(self)
Master.make_cake(self)
def make_school_cake(self):
School.init(self)
School.make_cake(self)
class Tusun(Prentice):
pass
xiaoqiu = Tusun()
print(xiaoqiu.money)
print(xiaoqiu.__money)
xiaoqiu.__info_print()
class Master(object):
def init(self):
self.kongfu = ‘[古法煎饼果子配方]’
def make_cake(self):
print(f’运用{self.kongfu}制作煎饼果子’)
class School(object):
def init(self):
self.kongfu = ‘[黑马煎饼果子配方]’
def make_cake(self):
print(f’运用{self.kongfu}制作煎饼果子’)
class Prentice(School, Master):
def init(self):
self.kongfu = ‘[独创煎饼果子技术]’
定义私有属性
self.__money = 2000000
文末有福利领取哦~
👉一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
👉二、Python必备开发工具
👉三、Python视频合集
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
👉 四、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。(文末领读者福利)
👉五、Python练习题
检查学习结果。
👉六、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
👉因篇幅有限,仅展示部分资料,这份完整版的Python全套学习资料已经上传
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!