gpt4 book ai didi

python - 动态向类添加方法

转载 作者:行者123 更新时间:2023-12-02 03:46:40 31 4
gpt4 key购买 nike

我正在尝试向基于列表的类添加方法。

class _Roles(object):
"""
set the roles for dev, staging and production
"""
def __init__(self):
from types import MethodType
steps = ['dev','stage','prod']
for step in steps:
def env_setter(self):
print step
method = MethodType(env_setter,self,self.__class__)
setattr(self,step,method)

问题是,当我调用 _Roles.dev()_Roles.stage()_Roles.prod() 时,我总是打印最后一步,即 prod,而不是为 dev() 打印 dev 等等。这是什么原因?

最佳答案

只需使用setattr:

class Foo:
def __init__(self, v):
self.v = v

def my_new_method(self):
print("self.v =", self.v)

setattr(Foo, 'print_v', my_new_method)

Foo(5).print_v()

输出:

self.v = 5

关于python - 动态向类添加方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13079299/

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