python @property详解,Python @property 详解

类方法转为只读属性

重新实现属性的setter, getter, deleter方法

类方法转为只读属性

class Jhy(object):

"""docstring for Jhy"""

def __init__(self, a, b):

self.a = a

self.b = b

def all(self):

return ('a: {}, b: {}'.format(self.a, self.b))

@property

def all2(self):

return('a: {}, b: {}'.format(self.a, self.b))

if __name__ == '__main__':

jhy = Jhy('name1', 'name2')

print(jhy.all()) #方法调用有()

print(jhy.all2) #属性调用没()

jhy.all2 = 11 # 这个属性赋值会报错

输出:

a: name1, b: name2

a: name1, b: name2

jhy.all2 = 11 AttributeError: can't set attribute

property代替 setter和getter, deleter方法, 类方法转为可修改属性

class Jhy(object):

"""docstring for Jhy"""

@property

def all(self):

return self._all

@all.setter # 设置属性修改方法 ,这里all = property(all)

def all(self, a):

if a != 1:

self._all = a

else:

print('Need a != 1')

@all.deleter

def all(self):

del self._all

pass

if __name__ == '__main__':

jhy = Jhy()

jhy.all = 11

print(jhy.all) # 输出11

del jhy.all

print(jhy.all) # 报错 因为已经删除了

输出:

11

Traceback (most recent call last):

File "C:\Users\jhy\Desktop\Tensorflow Demo\2.py", line 36, in

print(jhy.all)

File "C:\Users\jhy\Desktop\Tensorflow Demo\2.py", line 14, in all

return self._all

AttributeError: 'Jhy' object has no attribute '_all

实例

tensorflow/python/ops/control_flow_ops.py

f7e3709db1d4

Paste_Image.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值