1.类和实例
类是抽象的模板,而实例是根据类创建出来的具体对象
class Student(object):
def __init__(self,name,score):
self.name = name
self.score =score
def print_score(self):
print('%s : %s' % (self.name,self.score))
bart = Student('Bart Simpson',99)
bart.print_score()
2.类的内部的访问限制
变量前加上两个下划线表示对外隐藏该字段,如果需要访问,需要编写相关的get和set方法
以双下划线开头和结尾的变量为特殊变量,可以直接访问。
以一个下划线开头的变量可以访问,但不推荐这样。(python没有机制阻止,一切靠自觉)
3.多态和继承
多态:当需要传入父类的多个子类时,只需要在定义时将父类传入,在实际调用时,子类就会调用实际的方法
开闭原则:对扩展开放,对修改封闭
python相对于java来说是动态语言,父类传参数不是必须的,但需要确保内部有方法可以调用
4.获取对象信息
type(str)来判断对象类型 isinstance(a,b)用来判断class的类型(a是否为b)
type可以被isinstance来替代 (总是优先使用isinstance类型)
5.实例属性和类属性
实例属性属于各个实例所有,互不干扰;
类属性属于类所有,所有实例共享一个属性;
不要对实例属性和类属性使用相同的名字。
6.使用@property
使用property装饰器目的是限制类中属性的取值或是否可读,即对参数进行检查
7.多继承模式
不同于java中的单继承,多实现的方式,pthon中使用的为多继承方式。以最顶层父类为主,其他类用Mixin修饰。
class Dog(Mammal, RunnableMixIn, CarnivorousMixIn):
8.定制类
__str__() /__repr__():返回字符串打印。区别:repr用来程序调试的
__iter__()/__next__():用于可迭代对象进行循环
__getitem__():取可迭代对象中的元素
__getattr__():动态修改属性的取值
__call__():对实例进行调用 可以把对象看作函数,把函数看作对象
9.枚举类
python提供Enum('')来对多个元素进行枚举
10.动态创建类
python是动态语言,函数和类的定义是在运行时创建的
可以通过type()方法进行创建,还可以通过元类方式创建