Py学习  »  Python

为什么在这个python脚本中声明的顺序不是一个问题

Luke Gary • 3 年前 • 517 次点击  

食品

class Foo:
    def __init__(self):
        if type(self).__name__ in MAP.keys():
            print('WOO HOOO')
        self.Bar = True

MAP = {'Foo': Foo}

测试

>>> from foo import *
>>> x = Foo()
WOO HOOO

这是因为构造函数只在运行时检查?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/99351
 
517 次点击  
文章 [ 1 ]  |  最新文章 3 年前
wjandrea
Reply   •   1 楼
wjandrea    3 年前

你说得对, MAP 只是在抬头的时候 __init__ 正在运行。

如果这有助于你理解,让我们去掉所有不必要的信息:

  1. __初始化__ 是一种方法。你可以用函数得到同样的行为。
  2. 地图 不重要,我们只想检查它是否存在
  3. 让我们看看当 不存在,使用除其他外的尝试。
  4. 把一切都写在一个剧本里
  5. self.Bar x
def foo():
    try:
        MAP
    except NameError:
        print('No!')
    else:
        print('Yes!')

foo()  # -> No!
MAP = 0
foo()  # -> Yes!