一、首先说明:
python中什么都是对象,包括类,而实际上类实例对象才是对应静态语言中所谓对象的东西,所以说对象总是容易引起混淆。
特别需要注意的是:class也是个真实地存在于内存中的对象,而不是静态语言中只存在于编译期间的类型。
二、几种方法的区别:
1、staticmethod 基本上和一个全局函数差不多,只不过可以通过类或类的实例对象来调用而已,不会隐式地传入任何参数。
——这个和静态语言中的静态方法比较像。
2、classmethod 是和一个class相关的方法,可以通过类或类实例调用,并将该class对象(不是class的实例对象)隐式地当作第一个参数传入,默认变量为cls。
——这个比较奇怪。
3、正常的方法(普通方法)就是和一个类的实例对象相关的方法,通过类实例对象进行调用,并将该实例对象隐式地作为第一个参数传入,默认变量为self。
——这个也和其它语言比较像。
另外:
def __methodName(self,var):
class中这样定义(在方法名前面加__)的方法是私有方法。