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