Python静态方法、类方法、属性方法

静态方法

使用静态方法以后,相当于把下面的函数和类的关系截断了,它的作用相当于是类下面的一个独立函数,不会自动传入参数self。

1
class people:<br>.....<br>  @staticmethod<br>  def xxx():<br>    pass

  

类方法

只能访问类变量,不能访问实例变量。

1
@classmethod

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class dog:
    name = "小黑"
    def __init__(self,name):
        self.name = name
 
    @classmethod
    def hit(cls):
        print("%s" % (cls.name))
 
 
d1 = dog("小花")
d1.hit()
 
#输出
小黑

  

 

属性方法

把一个方法变成一个静态属性,调用的时候不需要加括号(d1.hit)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class dog:
    def __init__(self,name):
        self.name = name
 
    @property
    def hit(self):
        print("%s" % (self.name))
 
 
 
d1 = dog("小花")
d1.hit
 
#输出
小花

  

那么如何给属性方法传入参数呢?

可以看下面的代码,需要加上@hit.setter装饰(必须写在@property下面),且两个函数名保持一致。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class dog:
    def __init__(self,name):
        self.name = name
        self.__age = None
 
    @property
    def hit(self):
        print("%s%s" % (self.name,self.__age))
 
    @hit.setter
    def hit(self,age):
        print("Set hit input:",age)
        self.__age = age
 
d1 = dog("小花")
d1.hit
d1.hit = 11
d1.hit
 
#输出
小花None
Set hit input11
小花11

  

  

既然能传参,那么属性方法也是支持删除的。

1
2
3
@hit.deleter
    def hit(self):
        del self.__age

  

 

posted @   看不尽的尘埃  阅读(1277)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示