Python学习笔记之python面向对象编程

/ 0评 / 0

面向对象编程

封装,继承,多态

class Student (object):
    def __init__(self, name, score):
        self.__name = name
        self.__score = score

类名首字母大写,self相当于C++中的this指针,类中的函数,第一个参数必须是self,调用时不用传self

访问限制:变量或函数前加__,变量或函数变成private,外部不能直接访问,只能类内访问。变量被重命名成_Student__name

Student类继承object类,python允许多继承

多态:子类方法覆盖父类同名方法,默认是C++中的virtual。只要保证某类有同名方法,即可使用多态,非严格父-子类关系,称为鸭子类型,不要求严格继承

高级编程

类/实例可以动态绑定方法

1.使用__slots__ = ""限制实例绑定属性,只对本类实例起作用,对子类不起作用,不允许动态绑定,继承访问权限和C++相同

2.@property装饰器负责把方法变成属性,同时又创建另一个装饰器@xxx.setter

3.python允许多重继承,MinIn设计

4.定制类,实现__str__,__repr__,__call__

5.枚举类,Month=Enum("Month", ("Jan", "Feb"...))。枚举类不能实例化对象,可以从Enum类进行派生,@unique装饰器保证没有重复值

class Month(Enum):
    Jan = 0
    Feb = 1

6.使用元类,metaclass,相当于C++中的类模板,必须从type类派生。ORM的使用,对象关系映射,数据库的一行映射为一个对象,一个类对应一个表