Python-内置函数_@propery、@classmethod、@staticmethod详解
2021/8/24 22:37:21
本文主要是介绍Python-内置函数_@propery、@classmethod、@staticmethod详解,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、@property(fget = None, fset = None, fdel = None, doc = None): 作为一个装饰器,负责把一个方法变成属性调用如果c是C的实例对象,c.x将调用getter属性,c.x = value获取setter属性,del c.x将调用deleter属性,doc将给出property属性的文档字符串,即注释说明
class Parrot: def __init__(self): self._voltage = 10000 @property def voltage(self): '''Get the current voltage''' return self._voltage @voltage.setter def s_vol(self, value): '''set the current vol''' self._voltage = value @voltage.deleter def d_vol(self): '''del the current vol''' del self._voltage p = Parrot() print(p.voltage) p.s_vol = 20000 print(p.s_vol) p.s_vol = 30000 print(p.s_vol)
class Student(object): @property def score(self): return self._score @score.setter def score1(self, value): if not isinstance(value, int): raise ValueError('score must be an integer!') if value < 0 or value > 100: raise ValueError('score must between 0~100') self._score = value @score.deleter def score2(self): del self._score s = Student() s.score1 = 60 print(s.score) #返回60 s.score1 = 90 print(s.score) #返回90
二、@classmethod: 修饰符对应的函数不需要实例化,不需要self参数,但第一个参数需要是表示自身类的cls参数,可以来调用类的属性,类方法,实例化对象等
class A(object): #属性默认为类属性(可以直接被类调用) num = 100 #实例化方法(必须实例化类之后才能被调用,即A().func()) def func(self): print('func') print(self) #返回<__main__.A object at 0x7fb9c8111a30>,self表示实例化类后的内存地址id @classmethod #类方法,不需要实例化就可以被类本身调用,即A.func1() def func1(cls): #cls表示没有被实例化的类本身 print('func1') print(cls) print(cls.num) cls().func() #不传递默认self参数的方法(该方法也是可以直接被类调用,但是这样做不标准) def func2(): print('func2') print(A.num) #属性是可以直接用类本身调用 A.func1() ''' 返回结果: func1 <class '__main__.A'> 100 func <__main__.A object at 0x7f84c81b9a30> ''' A.func2() #返回结果: # func2 # 100 A().func() #返回结果: # func #<__main__.A object at 0x7f9578179a30>
三、@staticmethod: 返回函数的静态方法,相当于普通的函数,不需要强制传递self或者其它参数,如果有参数,要求是可调用的,class也可以。
可以实例化调用A().func(),也可以不实例化调用A.func()
class C(object): @staticmethod def f(): print('这是一个静态方法') C.f() #返回: 这是一个静态方法 C().f() #返回: 这是一个静态方法 class C1(object): @staticmethod class C2(object): def __init__(self, val = 1): self.val = val def shout(self): print('这是一个静态方法参数:%s '% self.val) C1.C2().shout() #返回结果: 这是一个静态方法参数:1
这篇关于Python-内置函数_@propery、@classmethod、@staticmethod详解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-28Python编程基础教程
- 2024-12-27Python编程入门指南
- 2024-12-27Python编程基础
- 2024-12-27Python编程基础教程
- 2024-12-27Python编程基础指南
- 2024-12-24Python编程入门指南
- 2024-12-24Python编程基础入门
- 2024-12-24Python编程基础:变量与数据类型
- 2024-12-23使用python部署一个usdt合约,部署自己的usdt稳定币
- 2024-12-20Python编程入门指南