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.

你可能感兴趣的:(python)