gpt4 book ai didi

python - 创建类的装饰器

转载 作者:行者123 更新时间:2023-11-30 23:33:56 24 4
gpt4 key购买 nike

我有课

class Test:
name = "Test"

我想创建一个装饰器 mc_me ,之后:

@mc_me
class Test:
name = "Test"

将为我提供三个类,就像我写的一样:

class Test:
name = "Test"

class TestSuper:
name = "TestSuper"

class TestExtra:
name = "TestExtra"

因此,本质上第一个棘手的部分是深度复制一个类,第二个部分是在调用者的作用域上分配三个变量。感觉应该有可能......

最佳答案

import inspect

def mc_me(cls):
main_locals = inspect.currentframe().f_back.f_locals
for suffix in ['Super', 'Extra']:
new_name = cls.__name__ + suffix
main_locals[new_name] = type(new_name, (), {'name': new_name})
return cls

请小心,这不是最好的编码方式。拥有权利的同时也被赋予了重大的责任。我鼓励您检查 inspect 方法的所有可能的缺点(Google 是您的 friend )。

关于python - 创建类的装饰器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18529283/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com