文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>python动态改变对象属性(热插拔)

python动态改变对象属性(热插拔)

时间:2010-07-16  来源:stonelee

运用非面向对象的技术,结合动态语言的特性,确实能实现许多很灵活的功能,
本文根据“Mixin 扫盲班  -- 赖勇浩”文后沈崴哥的代码改写
http://wiki.woodpecker.org.cn/moin/FlyintoMixin
假设现有水果,需要描述它的属性:颜色,熟了没?直接上代码:
#coding=utf-8
class Instance:
    def __init__(self, *args):
        for m in args:
            m(self)
            
    def config(self, *args):
        for m in args:
            m(self)
            
#无参数的            
def has_harvest(self):
    self.harvest = True
    
def has_not_harvest(self):
    self.harvest = False
    
#有参数的    
def setColor(color):
    def method(self):
        self.color = color
    return method
    
apple = Instance(has_not_harvest, setColor('green'))
print 'harvest:%s;color:%s' % (apple.harvest, apple.color)

apple.config(has_harvest, setColor('red'))
print 'harvest:%s;color:%s' % (apple.harvest, apple.color)

结果如下:
harvest:False;color:green
harvest:True;color:red

如果想再添加一属性:能不能吃?,很简单,代码如下:

#再加一属性
def can_eat(self):
    self.eat = True
    
apple.config(has_harvest, setColor('red'), can_eat)
print 'harvest:%s;color:%s;eat:%s' % (apple.harvest, apple.color, apple.eat)

结果如下:
harvest:True;color:red;eat:True

用这种技巧动态增加对象方法非常方便,值得推荐

相关阅读 更多 +
排行榜 更多 +
找茬脑洞的世界安卓版

找茬脑洞的世界安卓版

休闲益智 下载
滑板英雄跑酷2手游

滑板英雄跑酷2手游

休闲益智 下载
披萨对对看下载

披萨对对看下载

休闲益智 下载