zoukankan      html  css  js  c++  java
  • 反射1

    ##反射
    #通过字符串映射或修改程序运行时的状态、属性、方法,有以下四个方法
    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))
    以上内容作为课堂笔记,如有雷同,请联系于我
  • 相关阅读:
    默比乌斯函数
    勒让德符号相关
    微积分入门("SX"T版)
    分治法求2n个数的中位数
    SSM框架学习之高并发秒杀业务--笔记1-- 项目的创建和依赖
    10月9日Android学习笔记:活动与服务之间的通信
    高精度加法
    Windows环境下多线程编程原理与应用读书笔记(4)————线程间通信概述
    郁闷
    素数链
  • 原文地址:https://www.cnblogs.com/ArtisticMonk/p/8985735.html
Copyright © 2011-2022 走看看