gpt4 book ai didi

python - 在 Python 中,类型是作为可调用类实现的吗?

转载 作者:行者123 更新时间:2023-12-04 03:44:24 25 4
gpt4 key购买 nike

当我调用type(int)时,它返回type;当我调用 type(10) 时,它返回 int(而且,为什么这不是字符串 'int',而只是 int?).

type 似乎是继承自通用基类object 的类。那么,如果它是一个类,为什么我可以调用 type(int)?运算符 '()' 是否重新加载到类方法中,如 C++?

我很困惑。

最佳答案

澄清一下,typemetaclass ,其中类是实例。正如普通对象是类的实例一样,Python 3 中的任何类都是类型元类的实例。

这意味着,对象的类型是它对应的类,而类的类型是它的元类,元类也是类型对象。

> type(type)
<class 'type'>

有趣的是,类型的类型也是类型。更多详情 here .

根据官方documentation -

class type(name, bases, dict)

With one argument, return the type of an object. The return value is a
type object and generally the same object as returned by object.__class__.

因此,类型类在传递单个参数时应该返回与 object.__class__ 类似的结果


为了测试这一点并理解 python 中的方法、类和元类,让我们定义我们自己的类。

class myclass():
def __init__(self,s):
self.m = s
self.n = s*2
self.o = s*3

请注意,__init__() 方法(在类的实例化期间调用)接受允许将类实例化为对象的参数。因此,实例化一个类看起来几乎与调用一个方法完全一样。

obj = myclass('hello world ')

#Returning the self dict
obj.__dict__
{'m': 'hello world ',
'n': 'hello world hello world ',
'o': 'hello world hello world hello world '}

现在让我们检查对象的类和对象所属类的类(元类)。

#Class of object obj
> obj.__class__
__main__.myclass

#Class of class of obj = Class of myclass
> obj.__class__.__class__
type

#Class of class of class of obj = Class of type
> obj.__class__.__class__.__class__
type

关于python - 在 Python 中,类型是作为可调用类实现的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65404000/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com