代码之家  ›  专栏  ›  技术社区  ›  sebpiq

python:术语“class”与“type”

  •  35
  • sebpiq  · 技术社区  · 14 年前

    只是一个简单的问题:什么时候应该使用术语“class”,什么时候应该在python中使用术语“type”?

    • “class”仅用于用户定义的类型,而“type”用于内置类型吗?
    • 或者现在 everything is a type …即使对于用户定义的类,我也应该始终使用“type”吗?
    • …?
    5 回复  |  直到 8 年前
        1
  •  15
  •   knitti freethinker    14 年前

    它或多或少是历史性的: they used to be different 很久以前,这已经没有实际意义了。

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

    另外,当我使用元类(很少)时,我会提到类型。

        2
  •  11
  •   kindall    11 年前

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

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

    因为Python支持继承,所以所有类都可以用作附加类的模板,这意味着所有类实际上都是类型。

    这一点尤其正确,因为“新型类”的出现源自 object 将用户定义类的类型层次结构与内置类型统一起来。类总是类型,但现在它们是 同类 作为内置类型。

    尽管python类是类型,但我仍然发现这一区别很有用,因此在我的头脑中,术语并不是完全同义词。

    奖金定义:A 元类 是其实例为类的类。在python中,这些必须从 type 类,就像新样式对象是从 object.

        3
  •  3
  •   Ignacio Vazquez-Abrams    14 年前

    我用“type”来指一般情况,但当我谈论属性时,我会切换到“class”。

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

    {} 属于类型 dict . 这个 iteritems() 方法 双关语 类返回迭代器。

        4
  •  0
  •   Constantin    14 年前

    可以说,运行时的对象是某种类型的,但通过(多个)继承,可以将其视为属于多个类。

        5
  •  0
  •   IgNite    8 年前

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

    class Card:
       def __init__(self, suit=0, rank=0):
          self.suit = suit
          self.rank = rank
    card1 = Card()
    

    Card 是类对象,因此其类型为 type .

    然而, card1 是的一个实例 ,所以它的类型是 .