""" 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