标签:
python 类和实例
1、添加访问限制
def __init__(self, name, score):
self.__name = name
self.__score = score
外部访问和修改使用函数
__name变为私有变量,无法从外部直接访问和修改,Python解释器对外把__name变量改成了_Student__name或其他名字。
判断是否是某个类型 isinstance(a,list)
2、类的继承和多态
多态,父类子类 鸭子类型
3、对象类型
type() 可以判断两个对象类型是否相同
isinstance([1,2,3],(list,tuple))
3、实例属性和对属性
class Student(object):
def __init__(self, name):
self.name = name #self变量,实例属性
name = ‘Student‘ #类属性
实例属性和类属性尽量避免使用相同的名字,当实例的name属性没找到时,返回类属性。
4、使用__slots__
正常情况下,可以给实例绑定属性和方法,在类没有定义的情况下。
但一般来讲属性和方法直接定义在类中。
限制实例的属性绑定
class Student(object):
__slots__ = (‘name‘, ‘age‘) #只能绑定name和age
注:只对当前类有效,对子类无效
5、多重继承
Mixin
6、定制类
__str__ 用于打印,用户看到 s=Student() print(s)
__repr__ 用于调试 s
__iter__ __next__ 用于循环调用
__getitem__ 按下标取元素
__getattr__(self,name) 对类不存在的属性进行处理 应用SDK
__call__ 可以调用 s=Student() s()
7、枚举类
from enum import Enum
Month = Enum(‘Month‘, (‘Jan‘, ‘Feb‘, ‘Mar‘, ‘Apr‘, ‘May‘, ‘Jun‘, ‘Jul‘, ‘Aug‘, ‘Sep‘, ‘Oct‘, ‘Nov‘, ‘Dec‘))
for name, member in Month.__members__.items():
print(name, ‘=>‘, member, ‘,‘, member.value)
value属性则是自动赋给成员的int常量,默认从1开始计数。
8、使用元类
type()支持动态创建类
元类Metaclass
标签:
原文地址:http://www.cnblogs.com/hb91/p/5777936.html