在 Pydantic 中,如何声明 staticmethod/classmethod returns 所讨论的 class 的一个实例?
How to state, in Pydantic, that a staticmethod/classmethod returns an instance of the class in question?
我在 Python 3.7 工作,有这样的东西
class A(object):
def __init__(self, value: int):
self.value = value
@classmethod
def factory(cls, value: int) -> A:
return A(value=value)
是的,这是一个人为的例子,但我实际上是在尝试注释工厂函数以声明它 returns 是 A
的一个实例,但是,当我尝试 运行 文件上的 flake8
linter,因为它抱怨 A
未定义。
有没有什么方法可以注释这个函数,这样 linter 就不会报错了?
您可以通过使用 'A'
注释来避免这种情况:
class A:
@classmethod
def factory(cls, value: int) -> 'A':
...
或者您可以使用 __future__
annotations:
from __future__ import annotations
并继续使用 A
注释。
我在 Python 3.7 工作,有这样的东西
class A(object):
def __init__(self, value: int):
self.value = value
@classmethod
def factory(cls, value: int) -> A:
return A(value=value)
是的,这是一个人为的例子,但我实际上是在尝试注释工厂函数以声明它 returns 是 A
的一个实例,但是,当我尝试 运行 文件上的 flake8
linter,因为它抱怨 A
未定义。
有没有什么方法可以注释这个函数,这样 linter 就不会报错了?
您可以通过使用 'A'
注释来避免这种情况:
class A:
@classmethod
def factory(cls, value: int) -> 'A':
...
或者您可以使用 __future__
annotations:
from __future__ import annotations
并继续使用 A
注释。