类变量与类属性的区别
请问你能解释一下类变量和类属性之间的区别吗?
根据这个网页,类属性是属于类本身的变量。
举个例子:
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
我对这个问题有点困惑。所以,我觉得有必要回到面向对象的基本原则上,来帮助澄清一些概念(我参考了一些以前的教学笔记)。
要创建一个类,你需要写一个类定义。类定义就是一组语句,用来定义这个类的方法和数据属性。
进一步说,在面向对象编程中,一个对象是从类创建的(类就像蓝图),它包含数据和操作这些数据的程序。这个对象里的数据就是它的数据属性。一般来说,数据属性就是指向数据的变量。对象执行的程序就是方法。因此,从类创建的对象,概念上来说,是一个自包含的单元,里面有数据属性和操作这些数据属性的方法。
举个例子(希望能让事情更清楚)。假设我们有一个昆虫类。这个昆虫类描述了某种特定类型的对象可能拥有的数据属性和方法。根据这个类,我们可以创建两个对象:一个是黄蜂对象,另一个是蚊子对象。黄蜂对象是昆虫类的一个实例。它拥有昆虫类描述的数据属性和方法。此外,蚊子对象也是昆虫类的一个实例。它同样拥有昆虫类描述的数据属性和方法。