类装饰器实例int变量

  • 本文关键字:int 变量 实例 python
  • 更新时间 :
  • 英文 :

def classDecorator(aClass):
def variables(self):
for variable in self.__dict__:
if isinstance(variable, int):
yield variable
setattr(aClass, 'variables', variables)
return aClass
@classDecorator
class myClass:
pass
if __name__ == '__main__':
x = myClass()
x.a = 2
print(str(x.variables()))

这个decorator应该向类中添加一个方法,该方法返回调用它的实例的int类型实例变量的迭代器,但如果我运行程序,它会打印以下内容:

<generator object classDecorator.<locals>.variables at 0x011385D8>

为什么?

循环for variable in self.__dict__将为您提供变量的名称(作为字符串序列(。要获取值,可以使用以下方法:

for var, value in self.__dict__.items():
if isinstance(value, int):
yield var

此外,使用list()收集迭代器产生的值,如注释所示:

print(list(x.variables()))

最新更新