python反射

python

反射:用户输入字符串,hasattr:到内存中找是否存在字符串对应的属性名或方法名、getattr获取、setattr增加、delattr删除对应属性、方法

 1 class Dog(object):

2 def __init__(self,name):

3 self.name=name

4 def eat(self,food):

5 print('%s is eating %s'%(self.name,food))

6

7 def bulk(self):

8 print('%s is yelling'%self.name)

9

10 dog1=Dog('lele')

11 choice=input('>>:').strip()

12 if hasattr(dog1,choice): #判断对象是否具有对应字符串的方法

13 func=getattr(dog1,choice) #根据字符串,获取对象对应方法的内存地址

14 func('gutou')

>>:eat
lele is eating gutou

if hasattr(dog1,choice):    #判断对象是否具有对应字符串的方法、属性

func=getattr(dog1,choice) #根据字符串,获取对象对应方法、属性的内存地址

func('gutou')

else:

# 添加方法

setattr(dog1,choice,bulk) #给对象增加一个方法,setattr(x,'y',v)==> x.'y'=v

func=getattr(dog1,choice)

func(dog1) #相当于静态方法,所以要把对象作为参数传进去

>>:talk
lele is yelling

if hasattr(dog1,choice):    

func=getattr(dog1,choice)

func('gutou')

else:

#添加属性

setattr(dog1,choice,13)

v=getattr(dog1,choice)

print(v)

>>:age
13

if hasattr(dog1,choice):    #判断对象是否具有对应字符串的方法或属性

delattr(dog1,choice) #删除对象的属性

print(dog1.name)

以上是 python反射 的全部内容, 来源链接: utcz.com/z/388615.html

回到顶部