类变量与类属性的区别

8 投票
1 回答
4760 浏览
提问于 2025-04-18 01:04

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

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

举个例子:

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所说的类属性是同一回事吗?我觉得这两个术语之间是有区别的,我想了解一下。

谢谢!

1 个回答

6

我对这个问题有点困惑。所以,我觉得有必要回到面向对象的基本原则上,来帮助澄清一些概念(我参考了一些以前的教学笔记)。

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

进一步说,在面向对象编程中,一个对象是从类创建的(类就像蓝图),它包含数据和操作这些数据的程序。这个对象里的数据就是它的数据属性。一般来说,数据属性就是指向数据的变量。对象执行的程序就是方法。因此,从类创建的对象,概念上来说,是一个自包含的单元,里面有数据属性和操作这些数据属性的方法。

举个例子(希望能让事情更清楚)。假设我们有一个昆虫类。这个昆虫类描述了某种特定类型的对象可能拥有的数据属性和方法。根据这个类,我们可以创建两个对象:一个是黄蜂对象,另一个是蚊子对象。黄蜂对象是昆虫类的一个实例。它拥有昆虫类描述的数据属性和方法。此外,蚊子对象也是昆虫类的一个实例。它同样拥有昆虫类描述的数据属性和方法。

撰写回答