相关疑难解决方法(0)

为什么类定义总是生成相同的字节码?

说我同意:

#!/usr/bin/env python
# encoding: utf-8

class A(object):
    pass
Run Code Online (Sandbox Code Playgroud)

现在我拆开它:

python -m dis test0.py 
  4           0 LOAD_CONST               0 ('A')
              3 LOAD_NAME                0 (object)
              6 BUILD_TUPLE              1
              9 LOAD_CONST               1 (<code object A at 0x1004ebb30, file "test0.py", line 4>)
             12 MAKE_FUNCTION            0
             15 CALL_FUNCTION            0
             18 BUILD_CLASS         
             19 STORE_NAME               1 (A)
             22 LOAD_CONST               2 (None)
             25 RETURN_VALUE        
Run Code Online (Sandbox Code Playgroud)

现在我在类定义中添加一些语句:

#!/usr/bin/env python
# encoding: utf-8

class A(object):
    print 'hello'
    1+1
    pass
Run Code Online (Sandbox Code Playgroud)

然后我又拆开了:

  4           0 LOAD_CONST               0 ('A')
              3 LOAD_NAME                0 (object)
              6 BUILD_TUPLE …
Run Code Online (Sandbox Code Playgroud)

python bytecode disassembly python-internals

13
推荐指数
1
解决办法
355
查看次数

获取模块名称:x .__ module__ vs x .__ class __.__ module__

我想获取Python对象所来自的模块.都

x.__module__
Run Code Online (Sandbox Code Playgroud)

x.__class__.__module__
Run Code Online (Sandbox Code Playgroud)

似乎工作.这些完全是多余的吗?是否有理由偏爱另一个?

python module python-module

5
推荐指数
1
解决办法
5546
查看次数