当我阅读Python时,我看到了一个"类型对象","类对象","函数对象","模块对象",....
"xxx 对象"是否表示类型为"xxx"的实例?
例如
-
类型对象是否表示类型
type
的实例?例如,int
是类型对象吗?特定类是类型对象吗? -
类对象是否意味着什么的实例?特定类是类对象吗?例如
类是具有以下几个特征的 Python 对象:
• 您可以像调用函数一样调用类对象。 该调用(通常称为实例化(返回一个称为 类的实例;该类称为 实例。
• 一个类可以从其他类继承,这意味着它 将属性的查找委托给其他类对象在类本身中找不到。
-
函数对象是否意味着
types.FunctionType
的实例?特定函数是函数对象吗? -
模块对象是否表示
types.ModuleType
的实例?特定模块是模块对象吗? -
有 int 对象吗?如果是,是否意味着整数值(例如
12
( 类型int
?
谢谢。
是的,"类型">类型对象是否表示类型
type
的实例?例如,int
是类型对象吗?Ι 特定类是类型对象吗?
对象是指类型为"type"的对象,因此是该类型的实例。有关某物是什么类型的信息始终可以通过isinstance
进行检查。要回答您的第二个问题,int
是type
类型的对象:
>>> isinstance(int, type) # True
是自定义类类型对象:
>>> class Spammy:
... pass
>>> isinstance(Spammy, type)
True
类对象是否意味着什么的实例?特定类是类对象吗?
类对象的使用可以在 Python 2.2 中统一类型和类之后与术语type
对象互换。术语"类"主要用于指代用户定义的类(使用class
语句创建的类(,但它实际上意味着同样的事情。
这确实在具有旧式类的Python 2中有所不同。不从类定义中的对象继承给出了类型为classobj
的对象:
>>> class Foo:
... pass
>>> type(Foo)
<type 'classobj'>
这在 Python 3 中不存在,其中所有类都是type
类型的对象。
函数对象是否表示
types.FunctionType
的实例?特定函数是函数对象吗?模块对象是否表示
types.ModuleType
的实例?特定模块是模块对象吗?
对所有这些是的:
>>> def foo(): pass
>>> type(foo)
function
>>> import collections
>>> type(collections)
module
有没有
int
对象?如果是,是否意味着整数值(例如12
( 类型int
?
有一个int
类型,它是一个类型对象和一个int
对象,它是一个类型为int
的对象。这方面的一个例子是12
,因为:
>>> type(12)
int
同时,int
产生同样的事情:
>>> type(int)
type
请参阅type()
的文档:
使用一个参数返回对象的类型。返回值是一个类型对象,通常与
object.__class__
返回的对象相同。建议使用
isinstance()
内置函数来测试对象的类型,因为它考虑了子类。
我看看。int
是类型对象吗?
>>> type(int)
<class 'type'>
类对象意味着什么的实例?在 Python 3 中,类始终是新式类,因此它们构成了自身的type
:
>>> class X:
... pass
...
>>> y = X()
>>> type(y)
<class '__main__.X'>
但是对于Python 2.x的旧式类:
>>> class X:
... pass
...
>>> y = X()
>>> type(y)
<type 'instance'>
>>> type(X)
<type 'classobj'>
在这里,类有types.ClassType
,实例有types.InstanceType
(两者在Python 3.x中都不存在(
函数对象是一个types.FunctionType
:
>>> def foo():
... return 42
>>> type(foo) is types.FunctionType
True
>>> type(lambda x: x + 2) is types.FunctionType
True
模块对象是一个types.ModuleType
:
>>> import sys
>>> type(sys) is types.ModuleType
True
是的,有int
对象。考虑type(12)
.
在 Python 中,你可以将类型表示为对象本身。 所以是的,它们是类型对象。 对于每种类型,都有一个表示该类型的对象,例如int
。 它是类型本身的实例。
这就像 Java 中的.getClass()
和Class<?>
对象:"some string".getClass() == String.class
。 Java不将函数视为第一类值,因此有Callable
,Consumer<T>
等类型,但是在Python中,函数有一个特定的类型,并且有一个特定的对象表示该类型。