我有以下代码段和输出
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__
?
元类的原因或方式如何影响它?
答案 0 :(得分:1)
__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__
类型,因此您看到了输出。