簡體   English   中英

加載對象時如何在Python中使用類型提示

[英]How to use type hinting in Python when loading objects

我如何在類中向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知道代碼完成的類類型,等等。

您可能已經知道,在定義類方法時, 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM