Python面向对象高级编程——学习笔记详解编程语言

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

(0)
上一篇 2021年7月19日 11:24
下一篇 2021年7月19日 11:24

相关推荐

发表回复

登录后才能评论