我想指定,某些方法采用相同类型的参数,例如此函数。
我试图以动物为例来解释
class Animal:
def __init__(self, name : str):
self.name = name
def say_hello(self, animal: Animal):
print(f"Hi {animal.name}")
类型为str的名称不会出现任何问题,但是无法识别Animal:
NameError: name 'Animal' is not defined
我使用PyCharm和Python 3.7
答案 0 :(得分:0)
使用typing.NewType
定义类型并从中继承:
from typing import NewType
AnimalType = NewType('AnimalType', object)
class Animal:
def __init__(self, name: str):
self.name = name
def say_hello(self, animal: AnimalType):
print(f"Hi {animal.name}")
答案 1 :(得分:0)
该类名不可用,因为此时尚未定义。从Python 3.7开始,您可以通过在任何导入或代码之前添加以下行来启用注释(PEP 563)的延迟评估:
from __future__ import annotations
或者,您可以使用字符串注释,大多数类型检查器都应识别该注释,包括内置在PyCharm中的注释:
class Animal:
def __init__(self, name: str): # this annotation can be left as a class
self.name = name
def say_hello(self, animal: 'Animal'): # this one is itself a string
print(f"Hi {animal.name}")