码迷,mamicode.com
首页 > 编程语言 > 详细

python之内置装饰器(property/staticmethod/classmethod)

时间:2018-08-04 20:30:54      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:print   pytho   其他   方法调用   test   简单   eth   square   ssm   

 

python内置了property、staticmethod、classmethod三个装饰器,有时候我们也会用到,这里简单说明下

 

1、property

作用:顾名思义把函数装饰成属性

一般我们调用类方法成员,都是如下写法:

class propertyTest():
    def __init__(self,x,y):
        self.x = x
        self.y = y

    def square(self):
        return self.x * self.y

pt = propertyTest(3,5)
print(pt.square())

这里一看square就是类的一个方法,但如果把他写成如下形式,那么就不确定调用的一定是类方法:

class propertyTest():
    def __init__(self,x,y):
        self.x = x
        self.y = y

    @property
    def square(self):
        return self.x * self.y

pt = propertyTest(3,5)
print(pt.square)

这里调用方法类似调用了一个成员变量一样,如果写成print(pt.square())编译器会报错

这就是property的用法, 把一个方法变成一个变量来调用

 

 

2、staticmethod

作用:不需要实例化,直接可以调用类中的方法,如下所示

class A():
    def __init__(self):
        pass

    @staticmethod
    def plus(x,y):
        print(x*y)

c = A()
c.plus(2,3)
A.plus(4,5)

我们可以实例化类A,然后调用方法plus,也可以直接类.方法调用

 

3、classmethod

作用:和staticmethod类似,不同的是把调用的类作为第一个参数传入,如下:

class A():
    def __init__(self):
        pass

    @classmethod
    def plus(cls,x,y):
        print(cls)
        print(x*y)

A.plus(4,5)
c = A()
c.plus(5,6)

这里print(cls)打印的是类A,其他用法同staticmethod

 

python之内置装饰器(property/staticmethod/classmethod)

标签:print   pytho   其他   方法调用   test   简单   eth   square   ssm   

原文地址:https://www.cnblogs.com/watertaro/p/9419537.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!