lambda 配合property的使用技巧

如果在一个类中,想封装property属性,在调用的时候才执行

class MyOjbect(object):
    def __init__(self):
        self.fight_attrs()
    def fight_attrs(self):
        """
        @des: 动态设置带默认参数的property
        """
        keys = ['sm','fy','gj']
        for key in keys:
            setattr(self.__class__, key, property(lambda self, x=key:self.getFightAttr(x)))
            
    
    def getFightAttr(self, key):
        return key
 

分享到: 微信 更多