hasattr getattr setattr
hasattr
- 判断该类或对象是否有属性值,有返回True,否则False
class Demo():
name="laowang" # 类属性
def __init__(self):
self.age=18 #实例属性
def func(self):
return "demo类的方法func()"
ret = hasattr(Demo, "name")
print(ret) # True
ret1 = hasattr(Demo,"func")
print(ret1)# True
demo=Demo()
ret2 = hasattr(demo, "age")
print(ret2) # True
ret3 = hasattr(demo, "name")
print(ret3) # True
print(demo.name) # 实例对象可以访问类属性。
print(demo.age) # 18
getattr
class Demo(object):
bar=1
def func(self):
return "尼古拉斯赵四"
a=Demo()
a_value=getattr(a,"bar") # 获取实例的属性值,第一个参数是实例,第二个是字符串
print(a_value)
a_func=getattr(a,"func")()# 调用,返回尼古拉斯赵四
print(a_func)
d_func =getattr(Demo,"func")("self") # 类调实例方法,要声明一下self
# try:
# b_value = getattr(a,"bar1")# 获取bar1不存在,报错
# print(b_value)
#
# except Exception as e:
# print(e)
#
# finally:
# c_value = getattr(a, "bar2", "88888")
# print(c_value) # 获取属性bar2 的值,但是有默认值
setattr 设置类或属性的值,
class Demo():
name="尼古拉斯赵四"
def __init__(self):
self.age =1000
def func(self):
return "good luck"
setattr(Demo,"name","人在塔在")
print(Demo.name)
ret = getattr(Demo,"name")
print(ret)
demo=Demo()
setattr(demo,"height",180)
height = demo.height
print(height)