预期的字符串得到了属性

Som*_*me1 0 python properties typing dynamic pycharm

代码片段:

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
Run Code Online (Sandbox Code Playgroud)

get_source是一个@property返回字符串的 -shutil.copy2需要一个字符串才能工作

我的 IDE (PyCharm 4.0.6) 告诉我它需要一个字符串,但得到了一个属性。

这是一个错误吗?一个属性可以返回一个字符串,因此additional_file_source也可以是一个字符串(正如它预期的那样),但是当我打印它时它返回属性对象的对象 ID:

<property object at 0x....> <property object at 0x....>
Run Code Online (Sandbox Code Playgroud)

并抛出:

“属性”不支持缓冲区接口

有没有更简单和明显的方法来做到这一点而不会出错?

Dan*_*man 5

您是在类本身上调用属性,而不是在循环内的类实例上调用该属性。它应该是:

for filetocopy in self.files_to_copy:
    shutil.copy2(filetocopy.get_source, filetocopy.get_target)
Run Code Online (Sandbox Code Playgroud)

(另外,请选择更好的名称;get_source暗示您调用的方法,属性应该是source。)