class Folder:
def copy_files_with(self, extension: str, to_location: Folder):
pass
def __eq__(self, other):
if isinstance(other, Folder):
return (self._parent, self._subdirectory) == (other._parent, other._subdirectory)
return NotImplemented
def __hash__(self):
return hash((self._parent, self._subdirectory))
我正在将Visual Studio代码与PyLint
一起使用,并且通过copy_files_with
方法返回错误。
line 20, in Folder
def copy_files_with(self, extension: str, to_location: Folder)
我删除了所有不必要的代码,但是第20行是方法copy_files_with
所在的位置。
我不明白为什么,__eq__
方法可以在Folder
调用中看到isinstance
类。我希望to_location
成为Folder
,并且想在类型提示中指定该怎么做?
答案 0 :(得分:1)
在处理一个类及其方法时,在导入模块的那一刻,将运行包含“ class”和“ def”语句的行。方法主体-“ def”块中的代码,仅在稍后实例化该类并调用其方法时才运行。
因此,很自然地,没有在其自身的内部内部定义一个类-必须在Python创建类本身之前处理该类的主体-才将其与其类关联名称。
实现此目的的方法-在同一文件中转发对自己类的引用以及对类的引用,在注释中将其名称用作字符串-在这种情况下,您应使用
def copy_files_with(self, extension: str, to_location: 'Folder'):
,它应该可以与大多数使用注释的工具一起使用。