繁体   English   中英

跟随__builtin__的是什么?

[英]What turns following to __builtin__?

我有以下代码片段和输出

with metaclass:

def some(*args):
    return type(args)

__metaclass__ = some

class Foo:
   a = 'khkjh'


print Foo.__module__

输出: __builtin__

without metaclass:

class Foo:
   a = 'khkjh'

print Foo.__module__

输出: __main__

所以,

什么是__builtin__

元类为什么或如何影响它?

__builtin__是提供所有内置函数,异常等的模块。

您正在从__module__返回此信息,因为您提供的元类实际上将Foo转换为tuple类型:

>>> def some (*args):
...  return type(args)  # This returns <type 'tuple'>
...
>>> class Hmm(object):
...  __metaclass__ = some
... 
>>> class Foo(object):
...  pass
... 
>>> print Hmm
<type 'tuple'>
>>> print Foo
<class '__main__.Foo'>
>>> print tuple
<type 'tuple'>
>>> print tuple.__module__
__builtin__

如您所见, Hmm现在是tuple类型。 tuple类型由__builtin__模块提供,因此您将看到输出。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM