1. 类成员方法必须经过实例化对象后才能调用
2. 类成员方法的调用:
- 类方法:类名.方法名()
- 实例方法:类名().方法名()
3. self、@staticmethod、@classmethod的区别
(1)self:表示是当前类对象本身的实例,写在函数定义的第一个参数位置。
- 在当前函数内要访问当前类的属性和函数,需要通过关键字self.属性或self.方法()来调用。
- 如果是其他类或包需要调用当前函数,可以通过实例方法来调用。
(2)@staticmethod:装饰器,写在函数定义的前面。
- 在当前函数内要访问当前类的属性和函数,需要通过类名.属性或类名.方法()来调用。
- 如果是其他类或包需要调用当前函数,可以通过类方法和实例方法来调用。
(3)@classmethod:装饰器,写在函数定义的前面。
- 在当前函数内要访问当前类的属性或函数,需要通过在函数参数中定义一个参数来传递当前类对象,参数名自定,如参数.属性或参数.方法()。
- 如果是其他类或包需要调用当前函数,可以通过类方法和实例方法来调用。
实例:
class C:
name = 'I am 18.'
def func1(self):
print(self.name) # 调用当前类的属性,通过self.属性调用
#静态方法装饰器
@staticmethod
def func2():
print(C.name) # 调用当前类的属性,通过类名.属性调用
#类方法装饰器
@classmethod
def func3(cls):
print(cls.name) # 调用当前类的属性,通过当前类参数.属性调用
>>> C().func1()
I am 18.
>>> C.func2()
I am 18.
>>> C().func2()
I am 18.
>>> C.func3()
I am 18.
>>> C().func3()
I am 18.