如何在函数中扩展本地类?

时间:2013-09-10 16:21:09

标签: python subclass

这是我正在处理的结构

class myclass():
    def function(self):
        class localclass():
            params = {'a':1, 'b': 2}
        return localclass

我想在类localclass中添加参数,但不是直接在类'myclass'定义中添加。 所以我想调用/覆盖函数和/或类localclass来使用方法

添加params

params.update({'d': 4, 'e': 5})

我该怎么做?

感谢。

2 个答案:

答案 0 :(得分:2)

你可以使用装饰者:

def update(func):
    def wrapper(*args):
        cls = func(*args)
        cls.params.update({'d': 4, 'e': 5})
        return cls
    return wrapper        

class myclass(object):
    @update
    def function(self):
        class localclass(object):
            params = {'a':1, 'b': 2}
        return localclass

<强>演示:

>>> a = myclass()
>>> a.function().params
{'a': 1, 'b': 2, 'e': 5, 'd': 4}

答案 1 :(得分:1)

我认为您想要执行以下操作,无需修改任何当前代码:

>>> obj = myclass()
>>> cls = obj.function()
>>> cls.params.update({'d': 4, 'e': 5})
>>> cls.params
{'a': 1, 'b': 2, 'e': 5, 'd': 4}