python 类装饰器 添加属性_创建类级装饰器以自动添加属性

我想创建一个类级的装饰器,它自动向对象添加一个属性,包括适当的getter和setter方法以及一个支持变量。例如:@autoproperty("foo", can_get=True, can_set=True, allow_null=False, default_value=0)

@autoproperty("baz", can_get=True, can_set=False, allow_null=True, default_value=0)

@autoproperty("bar")

class SomeNonTrivialClass(object):

def __init__(self):

#lots of stuff going on here

def discombobulate(self):

#this is obviously a very trivial example

local_foo = self.foo;

if (local_foo > 10):

raise RuntimeError("Foo can never be more than 10")

else:

#do whatever with foo

if __name__ == '__main__':

test = SomeNonTrivialClass()

test.foo = 5

test.discombobulate()

test.foo = 11

test.discombobulate()

我经常发现自己创建了很多“半复杂”的getter/setter(它们可以用一个简单的属性完成,但它们需要默认值和null保护。我只希望能够指定一个decorator来完成在类的新实例上创建属性的重任。在

如果我在这个方法上有很大的偏差,我对同样可行的方法持开放态度。在

任何帮助都将不胜感激。在

我使用的是python3.X和python2.7,所以最好使用其中一种,但不是必需的。在

更新:我已经增加了一点,我正在寻找更多的品种。一般来说,我需要能够创建许多这些简单的自动属性(alac#auto属性,但是要有一点灵活性)。我不一定要公开后备存储,但我确实想确保对实例化对象(不一定是类)的检查显示已创建的属性。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值