【问题标题】:How to specify Type Hint for Parameters for Custom Classes? [duplicate]如何为自定义类的参数指定类型提示? [复制]
【发布时间】:2018-01-28 22:24:06
【问题描述】:

假设我创建了一个定义如下的类,并在其上调用了方法:

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 对象。如何使用类型提示来指定它?我假设您只需输入类的名称,例如new_friend: Student,但它不起作用。当我运行它时,我得到一个NameError: name 'Student' is not defined。我也试过new_friend: __main__.Student,但它给了我同样的错误。我做错了什么?

【问题讨论】:

    标签: python python-3.x function types type-hinting


    【解决方案1】:

    根据PEP-484,使用类的字符串名称进行前向引用:

    class Student:
    
        def __init__(self, name):
            self.name = name
            self.friends = []
    
        def add_friend(self, new_friend: 'Student'):
            self.friends.append(new_friend)
    

    【讨论】:

    • 这是正确的。使用类型提示时,会发生前向引用和自引用,当它们发生时,只需在类名周围加上引号。
    猜你喜欢
    • 2018-07-20
    • 2021-11-16
    • 2011-04-19
    • 2019-07-21
    • 2012-02-08
    • 1970-01-01
    • 1970-01-01
    • 2016-10-16
    相关资源
    最近更新 更多