Python动态语言特性简单例子
1、打开python开发工具IDLE,新建‘pdt.py’文件,编写代码如下:class mytest(): def __init__(self,name): self.name = namemt1 = mytest('张三')print (mt1.name)

3、通过setattr,动态改变mt1对象的name字段值,代码如下:class mytest(): def __init__(self,name): self.name = namemt1 = mytest('张三')print (mt1.name)setattr(mt1,"name",'李四')print (mt1.name)

5、接下来写一个复杂点的类中的函数,在调用时候动漤逗庞俄态改变,代码如下;class mytest: def 忧溲枷茫__init__(self,name): self.name = name def before(self): print ('before school') def after(self): print ('after school')class myparpre: def __init__(self,target): self.target = target def __getattribute__(self,name): target = object.__getattribute__(self,'target') atr = object.__getattribute__(target,name) if name == 'before': def fun(*args,**kwargs): print ('school bag') result = atr(*args,**kwargs) return result return fun else: return atr解释一下: myparpre类的对象调用一个方法,或者访问一个字段的时候,都会通过__getattribute__先找到这个对象的变量target,这个变量就是传入的mt1,再通过__getattribute__找到mt1的方法,就可以在mt1方法执行前或执行后,做操作了

7、F5运行程序,可以看到在执行before函数前做了新操作,而after函数没有变化
