我想在一個類中使用屬性和裝飾器,但我一直運行的問題是獲取正確的參數和參數的數量。使用類內部屬性的Python裝飾器
class Xml(object):
def __init__(self, data_dictionary=None):
self.data_dictionary = data_dictionary
def xml_wrapper(xml_msg):
def wrap():
return '<?xml version="1.0" encoding="UTF-8"?>\n'+xml_msg['name']
return wrap
@property
@xml_wrapper
def data_dictionary(self):
return self._data_dictionary
@data_dictionary.setter
def data_dictionary(self, data):
self._data_dictionary = data
if __name__ == '__main__':
xml = Xml()
xml.data_dictionary = {'name': 'name 1'}
print xml.data_dictionary
我得到的錯誤是
print xml.data_dictionary
TypeError: wrap() takes no arguments (1 given)
我不知道爲什麼,我嘗試添加自己的xml_wrapper功能,但我仍然得到一個錯誤。
'data_dictionary'正在被'xml_wrapper'裝飾器封裝,它返回一個不帶任何參數的函數('wrap');但是當你調用'xml.data_dictionary'時,隱式參數'xml'('self')正在被傳遞。 – mshsayem