python 内置关键字_内置关键字类型在python中是指函数还是类?

type被称为“元类”,因为它是一个生成其他类(又称类型)的类。它的行为与普通类类似。特别是,它有一个__new__方法的等价物,在Python中类似于:class type(object):

def __new__(cls, *args):

num_args = len(args)

if num_args not in (1, 3):

raise TypeError('type() takes 1 or 3 arguments')

# type(x)

if num_args == 1:

return args[0].__class__

# type(name, bases, dict)

name, bases, attributes = args

bases = bases or (object,)

class Type(*bases):

pass

Type.__name__ = name

qualpath = Type.__qualname__.rsplit('.', 1)[0]

Type.__qualname__ = '.'.join((qualpath, name))

for name, value in attributes.items():

setattr(Type, name, value)

return Type

Class = type('Class', (), {'i': 1})

instance = Class()

print(type(instance)) # -> Class

print(instance.__class__) # -> Class

print(type(type(instance))) # -> type

print(Class.i) # -> 1

print(instance.i) # -> 1

请注意,当实例化一个类时,新实例的值是从^{}返回的值。在type的情况下,__new__总是返回一个类型对象(AKA class)。下面是一个扩展int以使用-1而不是{}作为默认值的类的示例:

^{pr2}$

要真正深入研究type的工作原理,请看一下the C code in ^{}。您可以看到(向下滚动几行)是一个特殊情况,它立即返回x的类型(也称为类)。当您执行type(name, bases, dict)操作时,将调用类型创建机制。在

要获得更多乐趣,请尝试以下操作:type(object)

type(type)

isinstance(object, object)

isinstance(type, object)

type(1)

type(type(1))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值