Похоже, что ваш декоратор должен добавить метод в класс, который печатает целочисленные атрибуты в экземпляре, к которому он обращен. Это не то, что вы сейчас пытаетесь сделать, поскольку ваш код пытается найти переменные в классе , а не в экземпляре позже.
Думайте о том, что вы делаете, как метод, и это будет намного проще:
def decoratoreDiClasse(cls):
def elencaVariabili(self): # this is a method, so it should take self!
lista = [value for value in self.__dict__.values() # loop over our attribute values
if isinstance(value, int)] # and pick out the integers!
return lista
setattr(cls, "elencaVariabili", elencaVariabili) # don't call the method here
return cls
Из вашего кода не совсем понятно, должны ли вы возвращать имена целочисленных переменных или только сами значения. Я использовал только значения, но если вам нужны имена переменных, вам, возможно, придется изменить понимание списка, чтобы перебирать items()
словаря экземпляра, а не только values()
.