python修饰符
内置的修饰符有三个,分别是 staticmethod、classmethod 和 property,作用分别是把类中定义的实例方法变成静态方法、类方法和类属性。
class B:
def foo(cls): # cls主要用在类方法定义
print("调用类方法foo()")
#将foo设置为类方法
foo = classmethod(foo)
等价于
class B:
@classmethod
def foo(cls):
print("调用类方法foo()")
其实 Python 的修饰符就是一种优雅的封装,但要注意的是只可以在模块或类定义内对函数进行修饰,不允许修饰一个类。
一个修饰符就是一个函数,它将被修饰的函数做为参数,并返回修饰后的同名函数或其它可调用的东西。
看下面的例子
@something
def f():
print("I love you")
相当于
def f():
print("I love you")
f = something(f)
使用修饰符实现和property一样的功能
我们还可以用修饰符实现和property一样的功能,代码实现如下:
class C:
def __init__(self, size = 10):
self.size = size
def getSize(self):
return self.size
def setSize(self, value):
self.size = value
def delSize(self):
del self.size
x = property(getSize, setSize, delSize)
用修饰符实现结果
class C:
def __init__(self, size = 10):
self.size = size
@property
def x(self):
return self.size
@x.setter
def x(self, value):
self.size = value
@x.deleter
def x(self):
del self.size