前面把一些基础的语法看完,下面从面向对象开始学习。
在类中,方法前面加两个下划线__表示该方法是私有方法。
方法如果只有一个形参,则这个形参也可以表示类本身,一般命名为self,但也可以自行命名,类的方法中必须有一个这样的参数,不然会报错。(其实就相当于java中的this关键字)
如果不实例一个类,则无法直接访问类中的方法,但是可以访问类中的属性。但是可以在方法前面加一个类装饰器(@classmethod),就可以直接访问了。
#注释一行
定义静态方法:在方法前面加一个@staticmethod装饰器即可,方法可不用参数(即java中的this关键字)。
还有一种方法可以直接不实例直接访问,新的方法名=classmethod(方法名),然后用类名.新的方法名() 就可以访问了。静态方法同样适用。
方法前后各有两条下划线的方法称为内置方法或者魔术方法,例如__str__(self),就相当于java中的toString方法(个人理解),是类本身就定义好的方法。
构造函数:用于初始化类的内部状态,Python提供的构造函数是__init__();该方法是可选的,如果不提供,Python会给出一个默认的__init__方法。
其实和java的构造函数差不多,只是命名固定而已。
一般对数据的获取需要自定义的get和set方法。
析构函数:用于释放对象占用的资源,Python提供的析构函数是__del__();该函数也是可选的,如果不提供,则Python会在后台提供默认的析构函数。
和java的finally的作用挺像的,但性质不同。
如果要显式的调用析构函数,可以使用del关键字:del 对象名
Python中的继承和java不同,一个子类可以继承多个父类,真奇葩,还有就是pass的用法,有机会仔细看看。
继承多个父类的时候,如果父类有名称相同的属性,那么先继承谁的属性,最后就是谁的属性(先到先得),和变量定义不同,继承的方法也一样,先到先得。