面向对象3

组合

解决类与类之间的代码冗余问题 1. 继承:满足什么是什么的关系,is-a的关系 2. 组合:就是一个对象拥有一个属性,该属性的值是另外一个对象 继承是一把双刃剑,并不是继承的越多,就越好 class People(): school = 'SH' def __init__(self, name, age, gender, ): self.name = name self.age = age self.gender = gender class Admin(People): pass class Course(): def __init__(self, name, period, price, ): self.name = name self.period = period self.price = price python = Course('python', '6mon', 10000) linux = Course('linux', '5mon', 20000) class Student(People, Course): def __init__(self, name, age, gender, course=None): if course is None: course = [] self.courses = course super().__init__(name, age, gender, ) def choose_course(self, stu_obj, course): stu_obj.courses.append(course)

image

面向对象的内置函数

1. __init__() 2. __str__() 3. __del__() 4. __enter__() 5. __exit__() 6. __call__() class Student(): school = 'SH' # 调用类的时候触发 def __init__(self, name, age): self.name = name self.age = age def tell(self): print('name: %s, age: %s' % (self.name, self.age)) # 打印对象的时候,自动触发的函数 # 返回值只能是字符串 def __str__(self): return 'name:%s' % self.name # return 123 # 1. 手动执行del # 2. 程序执行完毕触发 def __del__(self): print('__del__') self.f.close() # 对象加括号自动触发 def __call__(self, *args, **kwargs): print('__call__') stu = Student('ly', 20)

image

反射(掌握4个方法)

# 对象通过字符串来操作属性 1. getattr print(getattr(stu, 'name1', None)) # stu.name stu.func() print(getattr(stu, 'func')) getattr(stu, 'func')() # 必须掌握 2. setattr setattr(stu, 'x', 123) print(stu.__dict__) 3. hasattr print(hasattr(stu, 'name')) 4. delattr delattr(stu, 'name') print(stu.__dict__)

image

异常

1. 什么是异常? 异常就是错误发生的信号,如果不对该信号做处理,那么异常之后的代码都不会执行 异常的种类: 1. 语法错误 print(123 2. 逻辑错误 # 逻辑错误尽量写到完美 a = [1, 2, 3] a[5] 2. 为什么要用异常 增强代码的健壮性 3. 怎么用异常? try: 被监测代码 except 异常的类型: pass except 异常的类型: pass except 异常的类型: pass except Exception as e: pass else: # 当被监测代码没有发生异常的时候,触发的 pass finally: 不管被监测的代码有没有出错,都执行

image


__EOF__

本文作者祈安
本文链接https://www.cnblogs.com/jyc666/p/15658568.html
关于博主:没有收拾残局的能力,就别放纵善变的情绪
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   丶祈安  阅读(28)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
点击右上角即可分享
微信分享提示