1 回答

TA貢獻1783條經驗 獲得超4個贊
看起來你應該讓你的裝飾器向類中添加一個方法,該方法在調用它的實例上打印出整數值屬性。這不是您當前嘗試執行的操作,因為您的代碼會嘗試在以后的類上查找變量,而不是在以后的實例上查找變量。
把你正在做的事情想象成一種方法,它會簡單得多:
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()
添加回答
舉報