通过字符串映射或修改程序运行时的状态、属性、方法, 有以下4个方法:
getattr
根据字符串去获取obj对象里的对应的方法的内存地址
hasattr
判断一个对象obj里是否有对应的name_str字符串的方法
setattr
setattr(x,y,v)相当与 x.y = v
delattr
删除字符串对应的方法
代码示例
def bulk(self
):
print('{} is singing'.format(self
.name
))
class Dog(object):
def __init__(self
,name
):
self
.name
= name
def eat(self
,food
):
print('{} is eating {}'.format(self
.name
,food
))
d
= Dog
('alex')
choice
= input('>>:')
print(hasattr(d
,choice
))
try:
choice
= input('>>:')
print(getattr(d
,choice
))
except AttributeError
as e
:
print(e
)
print('设置成员talk')
setattr(d
,'talk',bulk
)
print('调用talk')
func
= getattr(d
,'talk')
func
(d
)
setattr(d
,'name','lily')
print(getattr(d
,'name'))
print('删除成员name')
delattr(d
,'name')
print(hasattr(d
,'name'))
输出:
>>:eat
True
>>:talk
'Dog' object has no attribute
'talk'
设置成员talk
调用talk
alex
is singing
lily
删除成员name
False