class Washer():
def wash(self):
print(‘洗衣服’)
print(self)
haier = Washer()
print(haier)
haier.wash()
由于打印对象和打印self得到的内存地址相同,所以self指的是调用该函数的对象
haier1 = Washer()
print(haier1)
haier1.wash()
1. 一个类可以创建多个对象; 2. 多个对象都调用函数的时候,self地址是否相同
class Washer():
def wash(self):
print(‘洗衣服’)
print(self)
haier1 = Washer()
haier1.wash()
haier2 = Washer()
haier2.wash()
class Washer():
def wash(self):
print(‘洗衣服’)
haier1 = Washer()
添加属性 对象名.属性名 = 值
haier1.width = 400
haier1.height = 500
获取属性 对象名.属性名
print(f’洗衣机的宽度是{haier1.width}')
print(f’洗衣机的高度是{haier1.height}')
class Washer():
def wash(self):
print(‘洗衣服’)
获取实例属性
def print_info(self):
self.属性名
print(self.width)
print(f’洗衣机的宽度是{self.width}')
print(f’洗衣机的高度是{self.height}')
haier1 = Washer()
添加属性
haier1.width = 400
haier1.height = 500
对象调用实例方法
haier1.print_info()
目标: 定义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
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)
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
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-S9E6m2hg-1713692859772)]
[外链图片转存中…(img-fObwJO3o-1713692859772)]
[外链图片转存中…(img-nmMMQPr8-1713692859773)]
[外链图片转存中…(img-8aaW185s-1713692859773)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)