不同文件为入口文件时
1 | # file: fruit.py |
1 | # file: run.py |
- 考虑一个文件名为fruit.py的文件夹中定义了一个类
Apple
,同时初始化一个对象apple
- 若执行
python fruit.py
: 输入”main.Apple” - 若将当前文件导入到另一个文件run.py中,然后执行
python run.py
: 输出”fruit.Apple” - 也就是说,执行不同文件,类
Apple
的前缀不同
- 若执行
isinstance的困境
1 | # file: fruit.py |
1 | # file: run.py |
此时执行
python run.py
, 无任何输出若执行
python fruit.py
, 则输出如下:1
2
3
4<class '__main__.Apple'>
<class 'fruit.Apple'>
<class 'fruit.Apple'>
False- 此时
fruit.py
是程序的入口文件 - 在入口文件中执行
apple1 = Apple()
后得到的类将是__main__.Apple
- 在入口文件被导入到
run.py
文件中后,执行apple2 = Apple()
后得到的类将是fruit.Apple
- 此时,由于
apple2
的类别是fruit.Apple
且Apple
在fruit.py
中是__main__.Apple
,造成isinstance(apple2, Apple)
返回False
- isinstance的困境: 看起来是同一个类,但执行isinstance后返回False
- 此时