1、__slots__ 限制实例添加属性
class Car: name='Mary' def __init__(self,color): self.color = color def set_weight(self,weight): self.weight = weight car = Car("blue") # 通过初始化 设置属性值 car.set_weight(300) #通过方法 设置属性值 car.name ='Bob' #直接赋值给属性(类属性name或实例属性weight) car.size = 3 #可以为实例添加类中不存在的属性 #用__slots__ 限制实例添加属性 class Student(object): __slots__ = ('name', 'age') # 用tuple定义允许绑定的属性名称
2、自定义抛出错误
def set_score(self, value): if not isinstance(value, int): raise ValueError('score must be an integer!') if value < 0 or value > 100: raise ValueError('score must between 0 ~ 100!') self._score = value
3、多重继承MixIn
class Dog(Mammal, RunnableMixIn, CarnivorousMixIn): pass
4、定制类
__str__(self) : 定制返回信息,类似于Java里类的toString()方法 __iter__(self) : 用于for...in 循环 __getitem__(self) : 取第n个元素 __getattr__(self,attr) : 动态返回一个属性,动态URL调用
5、枚举类Enum(from enum impor Enum)
- 定义
from enum import Enum Month = Enum('Month', ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'))
- 使用
print(Month(1)) #Month.Jan print(Month(1).name) #Jan. 每一个枚举类默认有一个value,从1开始. for name, member in Month.__members__.items(): print(name, '=>', member, ',', member.value) # Jan => Month.Jan , 1
6、元类【未完待续】
声明:学习廖雪峰的Python教程——面向对象高级编程章节后的学习笔记,感谢Micheal Liao.
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/11576.html