python __set__ __get__,python的get和set函数

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: