Python中支持面向函数编程,也支持面向对象编程。现在我们来说的是面向对象编程,首先的说说在Python中的类成员。
类成员
字段
-普通字段,保存在对象中,执行只能通过对象访问
-静态字段,保存在类中,执行可以通过对象访问,也可以通过类访问 (在内存中只保存一份)
方法
-普通方法,保存在类中,有对象来调用,self->对象
-静态方法,@staticmethod保存在类中,由类直接调用
-类方法,@classmethod里面参数写cls,cls是类名保存在类中,有类直接调用,cls=当前类
在操作数据库的时候可以使用静态方法和类方法来实例化同一个操作对象,实现单例模式。
成员修饰符
共有成员
私有成员 __字段名
-无法直接访问,只能间接访问
在面向对象中的父类和子类之间的继承关系,在Python中支持多继承。父类定义的私有字段和方法,子类无法使用。
特殊成员
__init__ 类()自动执行
__call__ 对象() 类()()自动执行
__int__ int(对象)
__str__ str()
...
在Python中有一些特殊的成员,就是隐时的调用的函数。比如第一个在类实例化时创建,__call__方法也是默认的定义的,这些方法就是默认的指向关系,当执行时后面的操作时,默认执行前面对应的方法,里面没有具体实现任何操作,可以根据需要做自己的修改。
Python中支持多继承,寻找关系
a,左侧优先
b,一条路走到黑
c同一个根时,根最后执行
如果子类只有一个父类,在需要用的方法没有时去父类找即可。如果有两个父类或多个,就按上面的顺序执行,其中b的意思就是按照数据结构中的深度优先遍历算法。
很多小伙伴在Python中会看到下面那句话,这句话的意思就是有时在写完一个函数是需要测试,但是又可能在实际使用时其他用户调用了这个类,打印出了测试信息。这个判断就是,如果时自己本身调用的话__name__是 '__main__';不是本身的话就不是这个对象。
if __name__ == '__main__':
在子类中调用父类的两种方法
# super(Son,self).f2()
#super(Son,self)找到父类---当前的类名,这样就能调用父类的中的f2
领取专属 10元无门槛券
私享最新 技术干货