如何为自定义 类 的参数指定类型提示?

How to specify Type Hint for Parameters for Custom Classes?

假设我创建了一个下面定义的 class,并且调用了它的方法:

class Student:

    def __init__(self, name):
        self.name = name
        self.friends = []

    def add_friend(self, new_friend: Student):
        self.friends.append(new_friend)

student1 = Student("Brian")
student2 = Student("Kate")
student1.add_friend(student2)

方法 add_friend 有一个名为 new_friend 的参数,它是一个 Student 对象。我如何使用类型提示来指定它?我假设您只需输入 class 的名称,例如 new_friend: Student,但它不起作用。当我 运行 它时,我得到一个 NameError: name 'Student' is not defined。我也试过 new_friend: __main__.Student,但它给了我同样的错误。我做错了什么?

根据 PEP-484,使用 class 的字符串名称作为前向引用:

class Student:

    def __init__(self, name):
        self.name = name
        self.friends = []

    def add_friend(self, new_friend: 'Student'):
        self.friends.append(new_friend)