Избегание круговой ссылки в Python по типу намека на классы, ссылающиеся друг на друга [duplicate]

Котировки используются для различения конструкторов типового типа по сравнению с конструкторами уровня уровня продвигаемых типов.

Например:

{-# LANGUAGE DataKinds #-}

data Which = One | Two

myPick :: Which -- Type
myPick = One

type MyPick :: Which -- Kind
type MyPick = 'One

Кстати, аннотация вида вида type MyPick :: Which недействителен Haskell, но он дает вам представление о соответствии между термином и уровнем типа. Самое близкое, что вам нужно для этого, необходимо включить другое расширение:

{-# LANGUAGE TypeFamilies #-}

type family MyPick :: Which where
  MyPick = 'One
12
задан Martijn Pieters 21 November 2015 в 16:06
поделиться

1 ответ

Вы можете использовать ссылку forward , используя имя string для еще не определенного класса Client:

class Server():
    def register_client(self, client: 'Client')
        pass
22
ответ дан abccd 21 August 2018 в 20:39
поделиться
  • 1
    В качестве примечания, использование ссылок на прямую ссылку здесь больше не потребуется с Python 3.7 - вместо этого добавьте from __future__ import annotations импорт в оценку задержки аннотаций . Такое поведение, по-видимому, будет включено по умолчанию, как только Python 4.0 развернется. – Michael0x2a 27 July 2018 в 17:18
Другие вопросы по тегам:

Похожие вопросы: