首页 > 其他 > 详细

attr方法笔记

时间:2018-12-07 19:29:57      阅读:136      评论:0      收藏:0      [点我收藏+]

attr方法笔记

class test() :
    username = username值
    def hhh(self):
        return 运行我
    def a(self):
        return 1
p = test()
hasattr(object, name)
#hasattr(object, name)
print(hasattr(p,username))#判断一个对象中是否有其参数一样的类属性或者类方法,返回布尔值
print(hasattr(p,hhh))
getattr(object, name[,default])
print(getattr(p,username))#获取一个对象中方法或者属性,参数为函数名或者变量名,使用getattr需要保证的是函数或者变量存在,不然会报错
print(getattr(p,username))

print(getattr(p,hhh))#打印<bound method test.hhh of <__main__.test object at 0x0000000002564080>>
#getattr(p,‘2222‘)   #AttributeError: ‘test‘ object has no attribute ‘2222‘
getattr(p,hhh)()#再加括号表示运行
print(getattr(p,password,p.hhh()))#为了避免报错,如果找不到函数或者变量可以在后面再加上一个参数值,若不存在则返回默认变量
setattr(object, name, values)
#给对象的属性赋值,若属性不存在,先创建再赋值。
print(hasattr(p,password))#返回的一定是false
print(setattr(p,password,test.username))#给password赋予username同样的属性
print(p.username)
print(p.password)#虽然pycharm报错了但是我们仍然可以运行,也就是说我们也可以通过这种办法给函数或者变量赋值

print(hasattr(p,hhh))
print(getattr(p,cc,setattr(p,cc,p.a())))
print(getattr(p,cc))#这样就生成了一个cc函数并且和a一样方法

setattr应用

#这样可以理解成a方法,hhh方法,调用一个a时,如果没有调用成功,把hhh方法变成a方法,继续运行a方法而不用大批量修改方法名
if getattr(p, "c", None) is None:
    setattr(p, "c", p.hhh())
a = getattr(p, "c")

delattr(object,name)

#函数作用用来删除指定对象的指定名称的属性,和setattr函数作用相反
#删除属性

class Test:
    def __init__(self,name):
        self.name = name
    aaa = aaa
    def bbb(self):
        print(self.name)
delattr(test,aaa)
print("删除aaa成功应该返回False:",hasattr(test,aaa))#删除成功返回false
#delattr(test,‘name‘)没有实例化之前不能删除构造函数中的变量,直接报错
c = test(1)#实例化,下面是实例化之后的测试 #delattr(c,‘ssd‘)#删除不存在的变量也会报错 delattr(c,name)#用对象来删除变量 print("实例化之后可以直接删除构造函数中的变量",hasattr(c,name))#删除成功,返回False #在引用name报错说明删除成功 #print(c.name)# AttributeError: ‘test‘ object has no attribute ‘name‘

#不能删除方法
#delattr(c,‘bbb‘)#AttributeError: bbb,但是不能删除对象的方法

内建sttr方法

# __serattr__:
# 当设置对象的属性时会触发,比如self.name = name,有几次赋值会触发几次运行,或者setattr()被调用时也会触发__setattr__。
#
# __delattr__:
# 当删除对象属性时会触发,比如del p.name或者调用delattr()时也会触发__delattr__。
#
# __getattr__:
# 此内置方法比较特殊,当对象的属性不存在时会触发执行__getattr__。

 

版权声明:本文原创发表于 博客园,作者为 RainBol 本文欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。

attr方法笔记

原文:https://www.cnblogs.com/RainBol/p/10084142.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!