对当前函数使用python getattr/setattr

2024-05-14 15:28:25 发布

您现在位置:Python中文网/ 问答频道 /正文

是否可以使用getattr/setattr访问类函数中的变量?

下面的例子。假设我有一个类,它有两个方法,func1func2两者都有 其中定义了不同类型的变量count。有没有办法 getattr在func2中访问局部变量count

实际上,我 我想要的func2中的一些变量(在func1中也有不同的定义) 为了循环使用getattr,我希望通过使用 通过变量名的循环。

class A(object):

   def __init__(self):
      pass

   def func1(self):
        count = {"A": 1, "B":2}

   def func2(self):
        count = [1, 2]
        mean = [10, 20]
        for attr in ("count", "mean"):
           xattr = getattr(self, attr)   ! What do I put in here in place of "self"?
           xattr.append(99)

Tags: 方法函数inself定义defcountmean
2条回答

不,getattr()setattr()只处理对象的属性。您试图访问的是局部变量

您可以使用^{}访问本地名称字典:

for name in ("count", "mean"):
    value = locals()[name]
    value.append(99)

但最好直接列出名单,这里不需要经历这样的麻烦:

for value in (count, mean):
    value.append(99)

这已经在Stackoverflow上得到了回答。。。简而言之:

import sys

getattr(sys.modules[__name__], attr)

编辑:您还可以直接查找并更新由globals()返回的dict,例如,这大致相当于上面的getattr()

globals()[attr]

相关问题 更多 >

    热门问题