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'
#设置对象的属性