1.静态方法
1.作用:静态方法可以更好的组织代码,防止代码量增大后变得比较混乱。
2.特性:静态方法只是名义上的归类管理,实际上在静态方法里访问不了类或实例中的任何属性。
2.静态方法的应用场景:
2.1) 我们要写一个只在类中运行而不在实例中运行的方法,经常有一些跟类有关系的功能但是在运行时又需要实例和类参与的情况下需要用到静态方法
2.2) 比如更改环境变量或者修改其他类的属性等能用到静态方法
3.调用方式:既可以直接被类直接调用,也可以通过实例调用
class Dog(object):
def __init__(self,name):
self.name = name
@staticmethod
def eat():
print("I am a static method")
d = Dog("ChenRonghua")
d.eat() #方法1:使用实例调用
Dog.eat() #方法2:使用类直接调用
2.类方法
1.作用:无需实例化直接被类调用
2.特性:类方法只能访问类变量,不能访问实例变量
3.类方法使用场景:当我们还为创建实例,但是需要调用类中的方法
4.调用方式: 既可以被类直接调用,也可以通过实例调用
3.属性方法
1.作用:属性方法把一个方法变成一个属性,隐藏了实现细节,调用时不必加括号直接d.eat即可调用self.eat()方法
class Dog(object):
def __init__(self, name):
self.name = name
@property
def eat(self):
print(" %s is eating" % self.name)
d = Dog("ChenRonghua")
d.eat()
# 调用会出以下错误, 说NoneType is not callable, 因为eat此时已经变成一个静态属性了,
# 不是方法了, 想调用已经不需要加()号了,直接d.eat就可以了