python __set__ __get__,python的get和set函数
Python hasattr(,getattr,setattr,delattr))、函数hasattr)和函数hasattr)用于确定是否包含对应的属性。当然,对于Python对象,属性包含变量和方法;真实;如果有;如果不是,那就是假的;请注意,由于name参数是一个字符串类型,所以无论它是变量还是方法,name都是作为字符串传递的。Getattr和setattr是一样的。
语法:
Hasattr(对象,名称)).
参数:
目标
名称字符串,属性名称
返回值:
返回True如果对象具有此属性,则为;否则,将返回False
例如:
class people:country= China def _ _ init _ _(self,name(3360 self . name=namedefpeople _ info)self)33366660 country )# true print(hasattr(people, language )(false print))country in people。__dict_ ) ttttt _ init _ 3360函数人。_ init _ _ at0x 000029 c 736 aae 8, people _ info :函数people.people \ate
Getattr))函数用于返回对象的属性值。如果存在,则返回属性值;如果不存在,有两种情况。一种是没有默认参数就直接报错。如果给定了默认参数,而对象本身没有name属性,则返回给定的默认值。如果给定的属性名是一个对象的方法,则返回一个函数对象,必须调用函数对象才能得到函数的返回值。调用时,people_info:people_info(
另外,由于给定的方法People_info()(当方法是实例函数时,getattr (people," People_info "))是实例函数,所以当People_info()定义实例函数时,直接定义People _ info(self):pass;这样定义的函数只有在类实例化后,才能被类的实例化对象调用,而定义类函数必须用@classmethod限定,函数的默认参数是cls。
语法:
getattr(对象,名称,默认值).
参数:
目标
名称字符串,对象属性
default-默认返回值。如果未指定此参数,则在没有对应的属性时将引发AttributeError。
返回值:
返回对象属性值。
例如:
class people:country= China def _ _ init _(self,name(3360 self . name=namdefpeople _ info)self):print( % sis XXX % self . name)classmethoddeffunc)cls attr country )print)attr)# China attr=getattr)people, language ) trace back(mostrecentcalllast):file
obj=getattr(People, language )attribute错误:类型对象 People 没有属性 language attr=getattr(People, language ,None)print(attr)# None getattr(People, people_info ) trace back(最近一次调用last):File E:/python 5/train pro/myownstite/my _ study/py _ getattr _ setattr . py ,第42行,在模块getattr(People, People _ info )()type错误:People _ info()中缺少1个必需的位置 Setattr()函数描述:
Setattr函数,用于设置属性值,并将值赋给对象的name属性。如果给定的属性名原来存在于对象中,setattr会将属性值改为给定值;如果对象中不存在属性名,setattr会在对象中创建属性,并赋给给定值;
语法:
setattr(对象,名称,值)
参数:
对象对象
名称字符串,对象属性
值属性值
返回值
没有
示例:
class A:name= python def func(self):print( Hello World!)setattr(A, name , java)#等同于A.name=javaname=getattr(A, name )print(name)#==print(A . name)# javasetattr(A, age ,20)age=getattr(A, age )print(age)# 20 obj=A()setattr(obj, age ,18)print(obj.age)# 18print(obj ._ _ dict _ _){ age :18 } print(A . _ _ dict _ _) { _ _ module _ _ : _ _ main _ _ , name: java , func :函数A.func at0x000002694158AD08, _ _ dict _ _ : A 对象的属性_ _ dict _ _ ,__weakref__ : A 对象的属性_ _ weak ref _ _ ,__doc__ :无,年龄:20一般先判断对象中是否存在某属性,如果存在则返回;如果不存在,则给对象增加属性并赋值;很简单的语句判断:
if hasattr(A, age): print(getattr(A, age))else: setattr(A, age ,20) # 20 delattr()函数描述:
德拉特尔函数用于删除属性
delattr(x, foobar )相当于德尔十。福巴
语法:
德拉特尔(对象,名称)
参数:
对象对象
姓名必须是对象的属性
返回值:
无
示例:
class A:name= python def _ _ init _ _(self,age):self。age=age def func(self):print( Hello World!)print(A . _ _ dict _ _) { _ _ module _ _ : _ _ main _ _ , name: python , __init__ :函数A . _ _ init _ _位于0x 00001 f 360 AE 00d 0,“func”:函数A . func at0x 00001 f 360 AE 0158, _ _ dict _ _ :属性 objects,__weakref__ 的_ _ dict _ _ :属性__weakref__ 等同于del A . name print(A . _ _ dict _ _) { _ _ module _ _ : _ _ main _ _ , __init__ :函数A . _ _ init _ _位于0x 00001 f 360 AE 00d 0,“func”:函数函数在0x 00001 f 360 AE 0158, _ _ dict _ _ : A 对象的属性_ _ dict _ _ ,__weakref__ : A 对象的属性_ _弱引用_ _ 补充示例:
class Foo:def run(self):while True:cmd=input( cmd:).strip() if hasattr(self,cmd): func=getattr(self,cmd)func()def download(self):print( download . )def上传(自身):打印(上传.)obj=Foo()obj.run()
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。