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

标签 python class python-3.x

能否请您解释一下类变量和类属性之间的区别?

根据 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 所说的类属性是一回事吗?我相信这两个术语之间存在差异,我想学习。

谢谢!

最佳答案

我被这个问题弄糊涂了。因此,我认为有必要回到对面向对象原则的更一般性讨论来帮助澄清(引用我的一些较早的教学笔记)。

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

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

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

关于python - 类变量和类属性之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22822710/

相关文章:

Python 程序在 CMD 中工作但在导出到 .exe 时不工作

python - super().method() 与 super(self.__class__,self).method() 之间的区别

c# - 当基类中的属性发生更改时在派生类中通知

Python字典没有按顺序排列

Python - 字符串中的单词影响结果

python-3.x - 为什么等待任务比等待协程更快?

python - 从循环列表中填充字典

python - 时间范围检查应该包含还是排除?

python - 关于多站点的一般想法

iphone - 在与创建它的文件不同的文件中使用 NSString