Python:术语&x27;类别';VS';类型';

Python:术语&x27;类别';VS';类型';,python,class,types,terminology,Python,Class,Types,Terminology,只是一个简单的问题:什么时候应该使用术语“类”,什么时候应该在Python中使用术语“类型” “类”仅用于用户定义的类型,而“类型”用于内置类型吗 或者现在。。。即使对于用户定义的类,我也应该始终使用“type”吗 我使用“type”来表示一般情况,但在谈到属性时,我会切换到“class” 但是你选择哪一个并不重要 {}属于dict类型。类的iteritems()方法返回迭代器 它或多或少是历史性的:很久以前,已经没有任何实际意义了 Edit:我在提到具体实现时使用“class”,在谈到高级

只是一个简单的问题:什么时候应该使用术语“类”,什么时候应该在Python中使用术语“类型”

  • “类”仅用于用户定义的类型,而“类型”用于内置类型吗
  • 或者现在。。。即使对于用户定义的类,我也应该始终使用“type”吗
我使用“type”来表示一般情况,但在谈到属性时,我会切换到“class”

但是你选择哪一个并不重要

{}
属于
dict
类型。类的
iteritems()
方法返回迭代器


它或多或少是历史性的:很久以前,已经没有任何实际意义了

Edit:我在提到具体实现时使用“
class
”,在谈到高级数据结构、应用程序结构等时,我以更非正式的方式使用“
type
”。在我的思维中,类型是一个更一般的东西,我不认为每个类都是不同的类型


另外,当我使用元类(很少)时,我说的是类型。

你可以说运行时的对象是某种单一类型,但通过(多重)继承,它可以被视为属于几个类。

类是一种Python数据结构,可以通过调用它作为该类实例的模板,例如,
foo=foo()

类型是一个类,可以通过继承的方式用作其他类的模板,例如
class Foo(Bar):

由于Python支持继承,所有类都可以用作其他类的模板,这意味着所有类实际上都是类型

这一点在“新样式类”的出现后尤其明显,新样式类源自
object
,它将用户定义类的类型层次结构与内置类型统一起来。类始终是类型,但现在它们与内置类型是同一种类型

尽管Python类是类型,但我仍然发现这种区别很有用,因此在我看来,这些术语并不完全是同义词


额外定义:元类是实例为类的类。在Python中,这些对象必须派生自
类型
类,就像新型对象派生自
对象一样。

这可能无法直接回答您的问题,但它可能会让您感觉到类型和类之间的区别

class Card:
   def __init__(self, suit=0, rank=0):
      self.suit = suit
      self.rank = rank
card1 = Card()
Card
是类对象,因此其类型为
type


但是,
card1
Card
的一个实例,因此它的类型是
Card
,在python中
type
对象
,但是
关键字
,因此,根据上下文的不同,这些词可能有不同的含义。对这一点有更深理解的人似乎很满意

类型
对象可用于为
关键字提供等效功能

class Base(object):
    _about_base = 'An attribute of Base'
 
class MyClass(Base):
    about_myclass = 'An attribute of myclass'

that = MyClass

this = type( 'MyClass', (Base,), dict( about_myclass='An attribute of myclass' ) )
由上述代码生成的
这个
那个
是相同的,并且是
类型
类的实例。您可能会说它们是
类型的实例
x=this()
this
类/类型的实例

x = this()
assert type(this) is type
assert type(x) is this

好啊我只是想知道这一点,因为奇怪的是,一个东西会有两个名字。。。特别是对于像Python这样的非常简洁的语言!等到你点击“构造函数”和“初始值设定者”时,“构造函数”和“初始值设定者”一点也不混乱
\uuuuuuuuuuuuuuuuuuuuuuuuuuu
是构造函数,
\uuuuuuuuu init\uuuuuuuuu
是初始值设定项。@aaronsterling:不是。不是,因为“通过多重继承”它也是所有这些类型的。你会选择哪一种类型的?类
类型。我喜欢运行时方面;当创建新类型时,它是一个类,而在运行时,当创建具体类时,它是一个类型。你自己呢,什么时候使用一个或另一个?嗯。。。你也可以说“Card是类型的实例”而不是“Card是类对象”,我们回到了原点!仍然不需要“类”这个词最好的答案,信息量最大。