修饰符

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

你可能感兴趣的:(python学习)