预期的字符串改为 属性
expected string got property instead
代码片段:
def copy_additional_files(self):
try:
for filetocopy in self.files_to_copy:
shutil.copy2(FileToCopy.get_source, FileToCopy.get_target)
except NotImplementedError:
logging.error('keep thinking')
raise EwaException
get_source
是一个 @property
,return 是一个字符串 - shutil.copy2
需要一个字符串才能工作
我的 IDE (PyCharm 4.0.6) 告诉我它需要一个字符串,但却得到了一个 属性。
这是一个错误吗? 属性 可以 return 一个字符串,因此 additional_file_source
也可以是一个字符串(正如预期的那样),但它 return 是 属性 打印时的对象:
<property object at 0x....> <property object at 0x....>
并抛出:
'Property' does not support buffer interface
有没有更简单、更明显的方法来做到这一点而不会出错?
您是在 class 本身上调用 属性,而不是在循环内获得的 class 实例上调用。应该是:
for filetocopy in self.files_to_copy:
shutil.copy2(filetocopy.get_source, filetocopy.get_target)
(另外,请选择更好的名称;get_source
表示您调用的方法,属性 应该只是 source
。)
代码片段:
def copy_additional_files(self):
try:
for filetocopy in self.files_to_copy:
shutil.copy2(FileToCopy.get_source, FileToCopy.get_target)
except NotImplementedError:
logging.error('keep thinking')
raise EwaException
get_source
是一个 @property
,return 是一个字符串 - shutil.copy2
需要一个字符串才能工作
我的 IDE (PyCharm 4.0.6) 告诉我它需要一个字符串,但却得到了一个 属性。
这是一个错误吗? 属性 可以 return 一个字符串,因此 additional_file_source
也可以是一个字符串(正如预期的那样),但它 return 是 属性 打印时的对象:
<property object at 0x....> <property object at 0x....>
并抛出:
'Property' does not support buffer interface
有没有更简单、更明显的方法来做到这一点而不会出错?
您是在 class 本身上调用 属性,而不是在循环内获得的 class 实例上调用。应该是:
for filetocopy in self.files_to_copy:
shutil.copy2(filetocopy.get_source, filetocopy.get_target)
(另外,请选择更好的名称;get_source
表示您调用的方法,属性 应该只是 source
。)