gpt4 book ai didi

python - 自修改Python类

转载 作者:太空宇宙 更新时间:2023-11-04 10:33:24 25 4
gpt4 key购买 nike

我想在运行时修改类的初始值设定项。这样的代码是否有任何潜在的问题?我是装饰者的新手,所以不太确定。

class Object:
def __init__(self):
print "do something"
@classmethod
def modify(cls, f):
__init___old = cls.__init__
def __init__(self):
__init___old(self)
f(self)
cls.__init__ = __init__
return f

@Object.modify
def f(self):
print "do something else"

最佳答案

除了让不习惯 python 强大的元编程工具的人感到困惑之外,像您这样的事情应该可以正常工作。类是可修改的是 python 的一个特性。

但是,我会建议找到一种更传统的方法来完成您需要做的事情,元编程会导致文件中的源代码不再与粗略检查代码所建议的代码相匹配,所以它是可读性不是很好。对于这种特殊情况,您可以附加到类变量中的列表,以便在 __init__ 的循环中调用。

您可能会或可能不会遇到的唯一问题是,如果您使用 python 优化编译器,例如psyco、pypy,使用这样的动态特性可能会导致他们无法像其他方式那样优化事物。

关于python - 自修改Python类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25019195/

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