hasattr,getattr,setattr

class my:
    def __init__(self):
        self.d = 1
    def assign(self, k):
        self.j = k
        
a = my()        
#hasattr 方法
print(hasattr(a,assign))   #nameerror  所有的都要加引号

print(hasattr(a,'assign')) #True

print(hasattr(my(),'assign'))   #True my()跟a 是一个东西  都是class my的一个实例

print(hasattr(my,'assign'))     #True  my 是class  有方法 assign

#hasattr  属性 

print(hasattr(a,'d'))  
print(hasattr(my(),'d'))   
                          #True 因为实例 自动初始化了 而在初始化函数里 有d这个属性                         
print(hasattr(my,'d'))    #False 因为my是class  不是实例,没有执行__init__ 所以不会有d

print(hasattr(my(),'j'))   #False   因为创建实例只执行初始化函数  没有执行assign 所以
                           #不会有j这个属性

getattr(my(),'assign',None)  #假如有assign  就返回assign
                             #没有assign 返回None 如果没有第三个参数None 不写
                             #没有assign的话 就会引起error
setattr(a,'name','wang')  
print(a.name)  #'wang'
                         #设置对象的属性                         

猜你喜欢

转载自blog.csdn.net/speargod/article/details/80167559