簡體   English   中英

類裝飾器實例 int 變量?

[英]Class decorator instance int variables?

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()))

這個裝飾器應該向類添加一個方法,該方法返回它被調用的實例的 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()))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM