反射講解

#

反射

1、hasattr(obj,name_str)判斷obj裏面是否有對應懂得name_str字符串方法

2、getattr(obj,name_str)根據字符串去獲取obj對象裏對應的方法的內存地址

3、getattr(obj,y,z) 重新設置屬性obj.y=z

4、delattr # 指定刪除

def bulk(self):
print("%s is yelling!"%self.name)

class Dog(object):
def __init__(self,name):
 self.name=name

def eat(self,food):
    print("%s eat the milk and pick!%s eat %s"%(self.name,self.name,food))

d=Dog("ALEX")
choise=input(">>:").strip()
#print(hasattr(d,choise)) # 判斷d中有沒有choise方法!返回True和Flast
#print(getattr(d,choise))#獲取並調用
if hasattr(d,choise):
delattr(d,choise) # 刪除東西
#func=getattr(d,choise) # 獲取並調用
#``func("孫悟空")
#setattr(d,choise,"王八蛋") #重新給self。name賦值
#print(d.name)

else:
#setattr(d,choise,bulk) # 動態的裝一個方法到類裏 d.choise=bulk
#func=getattr(d,choise)
#func(d)
setattr(d, choise,"oxoxox") #添加一個屬性
func = getattr(d, choise)
print("%s:%s"%(choise,func))

#setattr(d,choise,22)
#print(getattr(d,choise))
#print(d.name)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章