zoukankan      html  css  js  c++  java
  • day17 Python 反射获取内容和修改内容

    """ master.py 模块文件
    
    Name = "fhb"
    
    def func1():
        print("i am func1")
    
    
    def func2():
        print("i am func2")
    
    
    def func3():
        print("i am func3")
    
    
    def func4():
        print("i am func4")
    
    
    def func5():
        print("i am func5")
        
        
    class Car(object):
        num = 10
    
        def __init__(self, color, price):
            self.color = color
            self.price = price
    
        def run(self):
            print("the Car is running!")
    
    """
    
    import master
    
    
    # 在导入master模块的时候,修改master模块中的 func1函数内容
    def func1():
        print("i am new func1")
    
    
    setattr(master, "func1", func1)  # setattr不会修改原来master模块的内容,只是导入的时候将master模块所在的内存修改为新的内容
    
    master.func1()  # i am new func1
    
    
    # 在导入master的时候新增一个func6函数
    def func6():
        print("i am func6")
    
    
    setattr(master, "func6", func6)  # 原来master存在func6的时候,则修改加载内存的内容,如果没有则新增此内容。
    
    master.func6()  # i am func6
    
    # 在导入master的时候删除func2()
    delattr(master, "func2")  # 在导入master的内存中,删除func2()。
    
    # 修改master中的变量 Name 的值,没有则新增变量
    setattr(master, "Name", "王大锤")
    setattr(master, "Age", "10")
    
    print(master.Name)  # 王大锤
    print(master.Age)  # 10
    
    while 1:
        funcName = input("please input func name which is master func: ")
    
        # 判断master这个模块中是否存在某个funcName函数
        if hasattr(master, funcName):
            func = getattr(master, funcName)
            func()
        else:
            print("%s is not exist" % funcName)
    
    
    """ --> result
    please input func name which is master func: func1
    i am func1
    please input func name which is master func: func4
    i am func4
    please input func name which is master func: func6
    func6 not exist 
    please input func name which is master func:
    """
    
    
    # 对象在内存中只存属性,而类在内存中存的是方法。所以修改属性需要修改对象的属性,修改方法是修改类的方法
    
    
    # 删除类中的方法
    car = master.Car("黑色",10000)
    
    car.run()
    # delattr(master.Car,"run")
    # car.run() # AttributeError: 'Car' object has no attribute 'run'
    
    # 修改对象中的属性
    print(car.color) # 黑色
    setattr(car,"color","红色")
    print(car.color) # 红色
    
    # 修改类属性
    setattr(master.Car,"num",20)
    print(master.Car.num) # 20
    

      

  • 相关阅读:
    实现两个整数变量的互换
    Js中replace替换所有*
    下载win10系统
    Linux网络基本网络配置方法介绍
    搭建Linux虚拟服务器
    解决SVN Cleanup错误: Failed to run the WC DB work queue associated with
    详细QRCode生成二维码和下载实现案例
    Win10中Vue.js的安装和项目搭建
    什么是Docker,它可干什么?
    Win10下搭建Git服务器
  • 原文地址:https://www.cnblogs.com/fanghongbo/p/9966188.html
Copyright © 2011-2022 走看看