一、基础篇
11.类实例方法调用
在类实例方法定义中,第一个参数为self,可认为是实例对象本身,类似于C++中的this指针。
两种等价的调用方式:
1.obj.obj_method()
2.MethodCall.obj_method(obj)
注:类方法和类的静态方法不支持第二种调用方式,但支持第一种调用方式。
代码举例:
class MethodCall:
def obj_method(self): #类实例方法
print("obj_method")
@classmethod
def class_method(cls): #类方法
print("class_method")
@staticmethod
def static_method(): #类静态方法
print("static_method")
if __name__ == '__main__':
obj = MethodCall()
obj.obj_method()
MethodCall.obj_method(obj)
obj.class_method()
MethodCall.class_method()
obj.static_method()
MethodCall.static_method()
输出结果:
obj_method
obj_method
class_method
class_method
static_method
static_method
错误的调用方式:
MethodCall.class_method(obj)
MethodCall.static_method(obj)
分别调用以上两个表达式,输出错误结果为:
TypeError: class_method() takes 1 positional argument but 2 were given
TypeError: static_method() takes 0 positional arguments but 1 was given