调用类
class A(object):
a = 'a'
@staticmethod
def func1(i):
print('hello', i)
def func2(self, i):
print('hello', i)
@classmethod
def func3(cls, i):
print('hello', i)
调用结果:
if __name__ == '__main__':
A.func1(1)
A.func2(2) #报错 TypeError: func2() missing 1 required positional argument: 'i'
A().func2(2)
A.func3(3)
区别:
静态函数和类函数可以不需要实列化直接通过类名.方法进行调用,对象函数则需要先实列化class()在调用函数,class().func()
调用属性和函数
class A(object):
a = 'a'
@staticmethod
def func1(i):
print('hello', i)
print('1',A.a)
A.func2(1) #TypeError: func2() missing 1 required positional argument: 'i'
A().func2()
def func2(self, i):
print('hello', i)
print('2',A.a)
print('2',self.a)
A.func1(2)
self.func1(2)
@classmethod
def func3(cls, i):
print('hello', i)
print('3',A.a)
print('3',cls.a)
A.func2(3) #TypeError: func2() missing 1 required positional argument: 'i'
A().func2(3)
cls().func2(3)