上篇回顾
- 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用
- 类 是一个模板,模板中包装了多个“函数”供使用(可以讲多函数中公用的变量封装到对象中)
- 对象,根据模板创建的实例(即:对象),实例用于调用被包装在类中的函数
- 面向对象三大特性:封装、继承和多态
- 静态属性(@property) 特点:将函数属性伪装成数据属性(封装逻辑)
- 静态方法(@staticmethod) 跟类和实例无关系,名义上归属类管理,但不能使用类变量和实例变量
- 类方法(@classmethod) 跟实例没有关系,类自己调用;只能访问类的属性,不能访问实例属性,不需要self参数,自动加cls参数
- 面向对象的专业术语
本篇介绍
反射
- 根据字符串的形式去某个对象中操作它的成员
- 四个可以实现反射的函数(也适用于对象和类)
class Sea: # def __init__(self,name,country,addr): self.name = name self.country = country self.addr = addr def sea_wave(self): print("一波儿海啸正在来袭") s1 = Sea("东海","哥雅王国","风车村") print(hasattr(s1,"name")) # 判断有没有 print(getattr(s1,"name123")) # 找不到报错 print(getattr(s1,"name123",None)) # 可以设置返回值则不报错 del s1.name # 方式1 print(s1.__dict__) delattr(s1,"name") # 方式2 print(s1.__dict__) setattr(s1,"age",10000) # 设置一个东西 print(s1.__dict__)