python deleter_Python如何使用@property @x.setter及@x.deleter

@property可以将python定义的函数“当做”属性访问,从而提供更加友好访问方式,但是有时候setter/deleter也是需要的。

只有@property表示只读。

同时有@property和@x.setter表示可读可写。

同时有@property和@x.setter和@x.deleter表示可读可写可删除。

代码如下

class student(object): #新式类

def __init__(self,id):

self.__id=id

@property #读

def score(self):

return self._score

@score.setter #写

def score(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 and 100")

self._score=value

@property #读(只能读,不能写)

def get_id(self):

return self.__id

s=student("123456")

s.score=60 #写

print s.score #读

#s.score=-2 #ValueError: score must between 0 and 100

#s.score=32.6 #ValueError: score must be an integer!

s.score=100 #写

print s.score #读

print s.get_id #读(只能读,不可写)

#s.get_id=456 #只能读,不可写:AttributeError: can"t set attribute

运行结果:

60

100

123456

代码

class A(object):#要求继承object

def __init__(self):

self.__name=None

#下面开始定义属性,3个函数的名字要一样!

@property #读

def name(self):

return self.__name

@name.setter #写

def name(self,value):

self.__name=value

@name.deleter #删除

def name(self):

del self.__name

a=A()

print a.name #读

a.name="python" #写

print a.name #读

del a.name #删除

#print a.name # a.name已经被删除 AttributeError: "A" object has no attribute "_A__name"

结果

None

python

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持云海天教程。

原文链接:https://www.cnblogs.com/tomyyyyy/p/12919881.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值