zoukankan      html  css  js  c++  java
  • 反射

    反射:通过字符串映射到对象的属性

    # 反射:通过字符串映射到对象的属性
    # hasattr()  判断有没有属性
    # getattr()  取到对象属性
    # setattr()  修改(新增)
    # delattr()   删除
    
    class People:
        country = "China"
        def __init__(self,name,age):
            self.name = name
            self.age = age
    
        def talk(self):
            print("%s is talking"%self.name)
    
    obj = People("alex",18)
    # print(obj.name)    # obj.__dict__["name"]
    # print(obj.talk)
    
    # print(hasattr(obj,"name")) # 判断obj下有没有.name属性,本质上obj.__dict__["name"]
    # print(hasattr(obj,"talk")) # 判断obj.talk存在与否
    #
    # print(getattr(obj,"name",None))   # 第三个参数为default,设置为None 没有obj.name,打印为None,不设置会报错
    # print(getattr(obj,"talk",None))
    #
    # setattr(obj,"sex","男")   # 本质是obj.sex = "男"
    # print(obj.sex)
    #
    # delattr(obj,"age")   #本质del obj.age
    # print(obj.__dict__)
    
    print(getattr(People,"country"))    #People.country
    

    反射实例: 接收用户输入,触发对应效果

    class Service:
        def run(self):
            while True:
                inp = input(">>:").strip()   # inp = "get a.txt"
                cmds = inp.split()   # cmds = ["get","a.text"]
                if hasattr(self,cmds[0]):
                    func = getattr(self,cmds[0])
                    func(cmds)
    
        def get(self,cmds):
            print("get........",cmds)
    
        def put(self):
            print("put........")
    
    obj = Service()
    obj.run()
    

      

  • 相关阅读:
    第九篇 python基础之函数,递归,内置函数
    第六篇:python基础之文件处理
    第五篇:python基础之字符编码
    第四篇:python基础之条件和循环
    第三篇:python基础之数据类型与变量
    第二篇:python基础之核心风格
    第一篇:初识Python
    作业
    作业3
    作业2
  • 原文地址:https://www.cnblogs.com/fantsaymwq/p/9919413.html
Copyright © 2011-2022 走看看