python 类

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

posted @ 2016-08-16 21:23  hb91  阅读(134)  评论(0编辑  收藏  举报