# 类的方法有三种:
# 1) 一是通过def定义的 普通的一般的,需要至少传递一个参数,一般用self,这样的方法必须通过一个类的实例去访问,类似于c++中通过对象去访问
# 2) 在def前面加上@classmethod,这种类方法的一个特点就是可以通过类名去调用,但是也必须传递一个参数,一般用cls表示class,表示可以通过类直接调用
# 3) 在def前面加上@staticmethod,这种类方法是静态的类方法,类似于c++的静态函数,他的一个特点是参数可以为空,同样支持类名和对象两种调用方式
代码示例:
class A(object):
member = 'this is a test'
def __init__(self):
pass
@classmethod # 类方法
def print1(cls):
print(cls.member)
def print2(self):
print(self.member)
@staticmethod # 静态方法
def print3():
print('static method')
@staticmethod # 静态方法
def print4(cls):
print('static method', cls.member, cls)
if __name__ == "__main__":
a = A()
A.print1()
a.print2()
A.print3()
A.print4(A)
a.print4(A)
a.print4(a)
----
this is a test
this is a test
static method
static method this is a test <class '__main__.A'>
static method this is a test <class '__main__.A'>
static method this is a test <__main__.A object at 0x102a08908>
网友评论