千锋教育-做有情怀、有良心、有品质的职业教育机构

python__setattr__的属性设置

来源:千锋教育
发布时间:2023-11-15 04:37:42
分享

python中__setattr__的属性设置

1、说明

定义类对象管理属性并将属性名以及值存储在一个实例对象中。

self.attrname以及instance.attrname将会调用类的内置方法__setattr__方法。

2、实例

#attr.pyclassAcessControl:

def__init__(self):

self.hobby="basketball"#会调用下面的__setattr__方法

def__setattr__(self,key,value):

#self.name="xxxx"#不能在__setattr__上使用self.attr,会导致递归应用循环

print("accesscontrolsetattr...")ifkey=='age':

self.__dict__[key]=value+10#通过内建字典来保存属性数据

else:

self.__dict__[key]=valuedef__delattr__(self,item):

print("delitem[%s]"%item)def__getattr__(self,item):

print("getitem[%s]"%item)deftest_access_control():

ac=AcessControl()

ac.age=10#调用__setattr__

print(ac.age)#直接输入值,没有调用__getattr__

print(ac.hobby)#当属性有值时,也就是非None是不会调用__getattr__方法的,如果没有值,即None就会调用__getattr__方法

delac.age#调用__delattr__

print(ac.name)#调用__getattr__,调用未定义的属性时候就会回调这个函数并且返回Noneif__name__=='__main__':test_access_control()>>>pythonattr.py#2.x&3.x

以上就是python中__setattr__的属性设置,希望对大家有所帮助。更多Python学习教程请关注IT培训机构:千锋教育。

声明:本站部分稿件版权来源于网络,如有侵犯版权,请及时联系我们。

相关推荐

  • python不同模板的分析 python不同模板的分析1、Jinja2Jinja2是快速全面的选项,可以用来Python2.x和3.x,遵循BSD许可。Jinja2从功能的角度和Mako有很多重叠,所以对于新手来说,你的选择可能
  • pythonvim插件的两种写法 python中vim插件的两种写法1、内嵌式{script}的内容是Python代码,{endmarker}是标记符号,可以是任何字符串,但{endmarker}前面没有任何空白字符,也就是说必须写在
  • python单下划线是什么意思 python单下划线是什么意思1、说明Python和Golang一样,不光类可以有方法,很多类型甚至基本类型也可以定义方法;在Python中不存在真正意义上的私有方法或者属性,前面加单下划线_只是表示
  • python整数和浮点数的常见用法 python整数和浮点数的常见用法1、Python的数据类型和其他语言比较类似,整数运算始终是精确的,而浮点数可能会有精度的丢失。2、「/」计算的结果是浮点数,5/3你无论试几次,它都是这个结果。即便
  • python有几种循环遍历的方法? python有几种循环遍历的方法?1、for-in可以用来遍历数组与字典。words=['cat','window','defenestrate']fo
  • python如何实现条件选择 python如何实现条件选择1、Python中使用if、elif、else来进行基础的条件选择操作:ifx