Python 如何在函数中扩展局部类?
这是我正在处理的结构Python 如何在函数中扩展局部类?,python,subclass,Python,Subclass,这是我正在处理的结构 class myclass(): def function(self): class localclass(): params = {'a':1, 'b': 2} return localclass 我想在类localclass中添加参数,但不想直接在类“myclass”定义中添加参数。 所以我想调用/重写函数和/或类localclass,用该方法添加参数 params.update({'d':4,'e':5
class myclass():
def function(self):
class localclass():
params = {'a':1, 'b': 2}
return localclass
我想在类localclass中添加参数,但不想直接在类“myclass”定义中添加参数。
所以我想调用/重写函数和/或类localclass,用该方法添加参数
params.update({'d':4,'e':5})
我该怎么做
谢谢。您可以使用装饰师:
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}
我认为您希望执行以下操作,无需修改任何当前代码:
>>> obj = myclass()
>>> cls = obj.function()
>>> cls.params.update({'d': 4, 'e': 5})
>>> cls.params
{'a': 1, 'b': 2, 'e': 5, 'd': 4}
想想如果这个班不是“本地”的,你会怎么做。然后对函数返回的对象执行完全相同的操作。但是我的主类实际上是一个Django管理类,所以我不想创建一个新实例。我想在读取函数时添加参数。实际上我不想在类文件中写入,所以我改为使用:
super().func(*args)
和cls.params.update()
。