类变量和类属性之间的区别

Fri*_*ser 5 python class python-3.x

你能解释一下类变量和类属性之间的区别吗?

根据这个网页,类属性是类本身拥有的变量。

例如:

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)}
Run Code Online (Sandbox Code Playgroud)

该网页说 tagDataMap 是一个类属性。但是根据Tutorialspoint.com 的说法,“类变量是一个类的所有实例共享的变量。类变量定义在一个类内,但在该类的任何方法之外。”

那么Tutorialspoint.com 所说的class 变量和diveintopython.net 所说的class 属性是一回事吗?我相信这两个术语之间存在差异,我想学习。

谢谢!

Nat*_*yne 6

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

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

扩展这一点,在面向对象编程的上下文中,从类(即蓝图)创建的对象具有数据和过程。从类创建的对象中的数据称为对象数据属性。一般来说,对象的数据属性只是引用数据的变量。对象执行的过程就是方法。因此,从概念上讲,从类创建的对象是一个独立的单元,由数据属性和对数据属性进行操作的方法组成。

一个例子(希望能让事情变得清楚。假设我们有一个昆虫类。昆虫类描述了特定类型的对象可能具有的数据属性和方法。从这个类中,我们可以创建 2 个对象:一个黄蜂对象和一个蚊子对象。大黄蜂对象是昆虫类的实例,它具有昆虫类描述的数据属性和方法。此外,蚊子对象是昆虫类的实例,它也具有昆虫类描述的数据属性和方法。由昆虫类描述。