1
zhusimaji 2017-07-11 16:57:47 +08:00
给楼主贴上我自己 python2 改造后的代码
https://gist.github.com/zhusimaji/31fe157b62703923bf6177f05f0fdbac 依次回答楼主的问题 ( 1 )类被倒入加载时,print 没有放在类定义的函数中是会被运行打印 ( 2 )语句 4 -> metaclass 是__new__和__init__都是先运行,没有任何问题 |
2
zhusimaji 2017-07-11 16:59:47 +08:00
这个可能与 python3 有关,建议楼主看下 python 3 关于 type 的说明
|
3
saximi OP @zhusimaji 非常感谢啊!
但是关于第二个问题的回答“语句 4 -> metaclass 是__new__和__init__都是先运行,没有任何问题”我还是没明白。 在语句 1 中已经指定 Foo 类要由 MyType 类来实例化创建,所以我觉得执行“ obj2=Foo()”这个语句时,应该就是实例化了一个类 Foo 的对象并赋值给 obj2,但是要根据 MyType 的定义来实例化。 这时应该去执行 MyType 定义中的__new__和__init__,而不是去执行 Foo 定义中的__new__和__init__。我这个理解错在哪里呢? 另外,您修改后的代码在 PYTHON2 下运行,在类被加载时会先去执行 MyType 中的__new__和__init__,然后再执行语句 3。 但是为何在 PYTHON3 下,类被加载时不会执行 MyType 中的语句,而是直接就执行语句 3 呢? |
4
saximi OP 自己再顶一下,上面说的遗留的问题,还请大家不吝赐教,感谢!
|