预期的字符串改为 属性

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