在python中,类,类变量,成员变量,字段,属性,类的方法,函数,这些各种各样多种名字的东西到底分别是什么呢?
其实不仅仅是编程,所有这些概念,都存在于其他面向对象的编程中。它们在java和c++中的声明与存在方式与python有很多“术”上的不同点,但在“道”上,即在面向对象编程的思想上,都是相通的。
(假设读者已经知道了java或c++的面向对象编程知识):
python中,我想为一个类添加它的全局变量,只需要来一句 var = xxx 而不需要在这个变量前加上public 或是private等作用域限定条件,此时的变量var,对所有类和对象都可读可写,同时它也是这个类的全局变量(即在内存中只有一份),而java和c++则要加上public static这样的关键字。那么python中想要定义私有变量以及对象独有变量(在内存中随对象而生灭)该怎么办呢?即是使用self.var来将变量绑定到self上,self即是对象本身。然后利用装饰器来构造成员变量(即是java和c++中的非静态属性,在python中也叫特性)的setter和getter等,来得到这个变量的可读与可写设置。
对于方法,与java,c++不同的是,python有对象方法与类方法的区别。对象方法的第一个参数都会传入对象,在调用这个方法时,会将调用它的对象也传入方法,然后进行处理。类方法则默认传入类本身。而函数则强调静态方法,未传入class,相当于一个C中的函数。