期望的字符串得到属性

时间:2015-04-27 11:34:20

标签: python dynamic properties pycharm typing

代码段:

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,它返回一个字符串 - shutil.copy2需要一个字符串才能工作

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

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

<property object at 0x....> <property object at 0x....>

并抛出:

  

'Property'不支持缓冲区接口

有没有更简单明了的方法可以做到这一点而没有错误?

1 个答案:

答案 0 :(得分:2)

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

for filetocopy in self.files_to_copy:
    shutil.copy2(filetocopy.get_source, filetocopy.get_target)

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