如何在一个类中调用pickle.load()命令的返回类型的python,其中load()命令返回该类的对象。
我曾希望直截了当的
class myClass:
@classmethod
def load(cls, filename) -> myClass:
with open(filename,'rb') as f:
return pickle.load(f)
会起作用,但是python抱怨myClass没有定义。
我希望python知道代码完成的类类型等。
答案 0 :(得分:2)
您可能已经意识到,在您定义类方法时,myClass
尚不存在,因此您无法直接引用它。
规定的替代方法是使用对象的字符串表示。它并不完美,但在一天结束时,提示并不是一种严格的执法手段;它只是一个非正式的暗示。
来自PEP 484:
当类型提示包含尚未定义的名称时,即 定义可以表示为字符串文字,稍后要解决。
class myClass:
@classmethod
def load(cls, filename) -> 'myClass':
with open(filename,'rb') as f:
return pickle.load(f)
事实上,有一个与你的PEP非常相似的例子:
class Tree:
def __init__(self, left: 'Tree', right: 'Tree'):
self.left = left
self.right = right