1
deplivesb 2021-09-29 11:24:14 +08:00 1
这和 typing 有什么关系么?除了标题我没看到任何 typing
而且你这个 文件 a import 文件 b,文件 b import 文件 a 。这个循环引用有什么问题么? |
2
ruanimal 2021-09-29 11:27:25 +08:00 2
if typing.TYPE_CHECKING:from a import A
|
3
plko345 2021-09-29 12:27:06 +08:00 via Android
我也有这个疑问
|
4
BBCCBB 2021-09-29 12:39:35 +08:00 1
现在简单用字符串..
from a import A class B: def func(self, a: 'A') typing 用字符串包裹. |
5
qs 2021-09-29 14:21:06 +08:00
|
6
qW7bo2FbzbC0 2021-09-29 14:58:24 +08:00
很久之前也遇到这个问题,后面改层级和归属解决了。在 go 里面也也遇到同样的问题
|
7
DaguguJ 2021-09-29 14:58:28 +08:00
from import 会导致,局部 import 就不会导致了。感兴趣看看两者的区别。然后,出现这个问题应该是编码不规范,代码不应该这么写的。
|
8
15399905591 OP @BBCCBB 用字符串的话,pycharm 会报警告,不知道为什么
Unresolved reference 'SpecicalDetailValueObject' Inspection info: This inspection detects names that should resolve but don't. Due to dynamic dispatch and duck typing, this is possible in a limited but useful number of cases. Top-level and class-level items are supported better than instance items. |
9
15399905591 OP @qs 你这个应该是 3.7 的新特性, 我用的 3.6, 用不了
|
10
15399905591 OP @hjahgdthab750 你那个是因为模块层级有问题,破坏了依赖倒置原则。 但我的代码是同一级, 类似 ORM 的 外关联关系, 两个 model 是在同一级的不同文件下面。
|
11
15399905591 OP @DaguguJ 你这个应该是 python 2.x 的解决方式,python3.x 没用
|
12
15399905591 OP @zhangdeplives 兄弟,typing 是指参数类型提示, 另外,这个循环有没有问题,你可以自己去试试
|
13
BBCCBB 2021-09-29 15:19:11 +08:00
> 用字符串的话,pycharm 会报警告,不知道为什么
他警告他的, 只要不报错, 能运行, 就 O 了. |
14
BBCCBB 2021-09-29 15:19:38 +08:00
或者在这里不加 typing.
|
15
15399905591 OP @BBCCBB 哈哈, 有一点代码洁癖, 看见提示就不爽
|
16
BBCCBB 2021-09-29 15:27:44 +08:00
把警告关了 🐶
|
17
Trim21 2021-09-29 15:48:20 +08:00 via Android
你要首先用 2 楼的办法引入 A,然后用字符串,就不有警告了。
|
18
15399905591 OP @Trim21 2 楼的好像不行
|
19
houzhiqiang 2021-09-30 15:25:26 +08:00
我也是用 2 楼的方法
|
20
vcfghtyjc 2021-10-12 03:25:58 +08:00
@15399905591 补充一下二楼的方法
``` if typing.TYPE_CHECKING: from a import A class B: def func(self, a: "A"): pass ``` |