Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在类主体的类型定义中引用类名_Python_Python 3.x_Typing - Fatal编程技术网

Python 在类主体的类型定义中引用类名

Python 在类主体的类型定义中引用类名,python,python-3.x,typing,Python,Python 3.x,Typing,我在使用所讨论的类键入语句时引用类名时遇到问题。以下代码显示了该问题: class C(): def __init__(self, a: C) self.a = a @property def a(self) -> C: return self.a 编译器抱怨C未定义。我试图做的是不可能的吗?我必须放弃在这个类中使用打字吗?你可以通过从“未来”导入注释的导入来解决这个问题: 或者简单地使用字符串: class C: de

我在使用所讨论的类键入语句时引用类名时遇到问题。以下代码显示了该问题:

class C():
    def __init__(self, a: C)
        self.a = a

    @property
    def a(self) -> C:
        return self.a

编译器抱怨C未定义。我试图做的是不可能的吗?我必须放弃在这个类中使用打字吗?

你可以通过从“未来”导入注释的导入
来解决这个问题:


或者简单地使用字符串:

class C:
    def __init__(self, a: 'C'):
        self.a = a

    @property
    def a(self) -> 'C':
        return self.a

@Georgy我只是在类型定义中用引号将名称括起来。@Georgy,顺便说一句,我使用的是Python 3.8.3,所以PEP_0563中的一些材料是Python的,我不需要从
\uuuuuuuuuuuuuu
class C:
    def __init__(self, a: 'C'):
        self.a = a

    @property
    def a(self) -> 'C':
        return self.a