类变量和类属性的区别

8
请问您能否解释一下类变量和类属性之间的区别?
根据this网页,类属性是由类本身拥有的变量。
例如:
class MP3FileInfo(FileInfo):
    "store ID3v1.0 MP3 tags"
    tagDataMap = {"title"   : (  3,  33, stripnulls),
                  "artist"  : ( 33,  63, stripnulls),
                  "album"   : ( 63,  93, stripnulls),
                  "year"    : ( 93,  97, stripnulls),
                  "comment" : ( 97, 126, stripnulls),
                  "genre"   : (127, 128, ord)}

这个网页说tagDataMap是一个类属性。但根据Tutorialspoint.com,“类变量是所有类实例共享的变量。类变量在类内部定义,但在任何类方法之外定义。”
那么Tutorialspoint.com所说的类变量和diveintopython.net所说的类属性是相同的吗?我相信这两个术语之间存在差异,我想学习一下。
谢谢!

14
它们是同一件事。 - Martijn Pieters
1个回答

6

我对这个问题有些困惑。因此,我认为回到更一般的面向对象原则讨论会帮助澄清问题(参考我的旧教学笔记)。

要创建一个类,你需要编写一个类定义。类定义是一组定义类的方法和数据属性的语句。

在面向对象编程的上下文中,从类(蓝图)创建的对象具有数据和过程。从类创建的对象中的数据称为对象的数据属性。通常,对象的数据属性只是引用数据的变量。对象执行的过程是方法。因此,从类创建的对象,在概念上是一个包含数据属性和操作数据属性的方法的自包含单元。

举个例子(希望能够更加清晰地说明问题)。假设我们有一个昆虫类。昆虫类描述了一个特定类型对象可能具有的数据属性和方法。从这个类中,我们可以创建两个对象:黄蜂对象和蚊子对象。黄蜂对象是昆虫类的实例。它具有昆虫类描述的数据属性和方法。此外,蚊子对象也是昆虫类的实例。它也具有昆虫类描述的数据属性和方法。


完全同意Apalala。我想如果有一些混淆的地方,回顾一下面向对象编程的基础可能会有所帮助。 - Nathaniel Payne

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接