码迷,mamicode.com
首页 > 其他好文 > 详细

反射1

时间:2018-05-03 16:35:50      阅读:120      评论:0      收藏:0      [点我收藏+]

标签:修改   asa   直接   ##   根据   getattr   定义   strip   输入   

##反射
#通过字符串映射或修改程序运行时的状态、属性、方法,有以下四个方法
def talk(self):
    print("%s 的叫声真好听...." % self.name)
class Proper(object):
    def __init__(self,name):
        self.name = name
    def eat(self):
        print("%s is eating...." % self.name)

chyice = Proper("CaiCai")
##想要给用户调用确定的调用方式,就用反射
chyInput = input(">>:").strip()
###用户的输入返回的时字符串,不能直接调用
# print(hasattr(chyice,chyInput))###判断用户输入的方法有没有存在,如果存在就返回True,不存在就返回Flase,不会报错
# print(getattr(chyice,chyInput))###根据字符串去获取obj的对象里的对应的方法的内存地址
# getattr(chyice,chyInput)()
##所以通过以上两个方法我们就可以这样做:
if hasattr(chyice,chyInput):
    delattr(chyice,chyInput)####删除用户输入的属性值
##################
    # Chy = getattr(chyice,chyInput)
    # Chy()
 #################
    # setattr(chyice,chyInput,talk)####也可以用来设置方法里面的属性值比如输入name
else : ###假如这个方法不存在我们就可以创建一个新的方法,首先要定义一个
    setattr(chyice,chyInput,talk)###设置新的属性
    chyice.talk(chyice)###这里的值不会自动关联,所以要自己传一个值进去

d=chyice.name######setattr()
print(d(chyice))

 

反射1

标签:修改   asa   直接   ##   根据   getattr   定义   strip   输入   

原文地址:https://www.cnblogs.com/ArtisticMonk/p/8985735.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!