Python当中内置的修饰符有三个,分别是staticmethod、classmethod和property,作用是分别把类中定义的实例方法变成静态方法、类方法和类属性。这三种修饰符在平常读代码的时候偶尔遇到,在此记录一下。
@property的作用是将类方法转为属性,直接通过方法名访问
class Animal():
def __init__(self, mind):
self._mind = mind
@property
def s_mind(self):
return self._mind
an = Animal("gougou")
print(an.s_mind) #调用的时候可以不加括号
#注意使用以下方式赋值时会报错
an.s_ming = "maomao"
@classmethod 将对象方法转化为类方法,在类方法函数的参数上需要加上cls作为参数,但是在调用的时候不需要添加参数。
class Animal():
bar = "wangwang"
@classmethod
def func1(cls, para):
print(f"{para}:{cls.bar}")
print(cls.__name__)
print(type(cls))
def func2(self):
print("func2")
if __name__ == "__main__":
Animal.func1("gougou") #不需要实例化
print(type(Animal))
#输出
gougou:wangwang
Animal
<class 'type'>
<class 'type'>
@staticmethod 将对象方法转化为静态方法,可以被类直接调用
class Animal(object):
@staticmethod
def func1():
print("func1")
if __name__ == "__main__":
Animal.func1() #不需要实例化,函数的参数中不需要self