Python面向对象静态方法,类方法,属性方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python面向对象静态方法,类方法,属性方法相关的知识,希望对你有一定的参考价值。

静态方法(staticmethod名义上归类管理,实际上在静态方法里访问不到类或实例中的静态属性)

 1 class days(object):
 2     def __init__(self, food):
 3         self.food = food
 4 
 5     @staticmethod  # 实际和类没有关系
 6     def tell(self):
 7         print(这里有%s,%s快来 % (self.food, name))
 8 
 9 
10 a = days(香蕉)
11 a.tell(a)

类方法(classmethod只能访问类变量,不能访问实例变量)

 1 lass f2(object):
 2     name = 大哥大大  # 类变量
 3 
 4     def __init__(self, name):
 5         self.name = name
 6 
 7     @classmethod
 8     def eat(self):
 9         print(这里有%s,【%s】 % (self.name, 类的方法))
10 
11 
12 f2.eat()

属性方法(把一个方法变成一个静态属性)

由属性的定义和调用要注意一下几点:
1 定义时,在普通方法的基础上添加 @property 装饰器;
2 定义时,属性仅有一个self参数
3 调用时,无需括号

属性的定义有两种方式:
1 装饰器 即:在方法上应用装饰器
2 静态字段 即:在类中定义值为property对象的静态字段

经典类,具有一种@property装饰器:

 1 class f3(object):
 2     def __init__(self, name):
 3         self.name = name
 4         self.__food = None
 5 
 6     @property
 7     def eat2(self):
 8         print(这里%s,【%s】 % (self.name, 在干什么))
 9 
10 
11 c = f3(阿猪)
12 c.eat2

新式类,具有三种@property装饰器,分别对应了三个被@property、@方法名.setter、@方法名.deleter修饰的方法。

 1 class f4(object):
 2     def __init__(self, name):
 3         self.name = name
 4         self.__food = None
 5 
 6     @property  # 把一个普通方法变为属性方法,获取
 7     def eat(self):
 8         print(这里%s,【%s】 % (self.name, self.__food))  # 由于没有参数self.__food在这没有调用
 9 
10     @eat.setter  # 修改
11     def eat(self, food):
12         print(我要吃%s % food)
13         self.__food = food
14 
15     @eat.getter  # 删除
16     def eat(self):
17         del self.__food
18         print(删除字段self.__food)
19 
20 
21 d = f4(阿豪)
22 d.eat
23 d.eat = 饺子
24 del d.eat
25 d.eat

 

以上是关于Python面向对象静态方法,类方法,属性方法的主要内容,如果未能解决你的问题,请参考以下文章

Python之路-面向对象&继承和多态&类属性和实例属性&类方法和静态方法

Python面向对象静态方法,类方法,属性方法

Python之路系列:面向对象初级:静态属性静态方法类方法

python面向对象之静态属性/静态方法/类方法/组合

Python之路(第二十三篇) 面向对象初级:静态属性静态方法类方法

Python面向对象 --- 新旧式类私有方法类属性和类方法静态方法