class A:
# 类属性
str1 = 'this is test'
# 实例方法
def normal_method(self, name):
return self.str1
# 类方法
@classmethod
def class_method(cls, name):
return cls.str1
# 静态方法
@staticmethod
def static_method(str):
return str
实例化
a = A()
a.str1 = 'this is test2'
调用实例方法
print(a.normal_method('aaa')) # this is test2
# print(A.normal_method('aaa')) # 实例方法由实例来调用 类不能调用
调用类方法
print(a.class_method('bbb')) # this is test
print(A.class_method('bbb')) # this is test
调用静态方法
print(a.static_method('aaa')) # aaa
print(A.static_method('bbb')) # bbb
总结
1.实例方法----随着实例属性的改变而改变,类无法调用实例方法。
2.类方法----可以实例调用也可以类调用,都是类属性的值,不随实例属性的变化而变化。
2.静态方法----可以实例调用也可以类调用,不可以访问类属性。