Python中类对象和实例对象的区别
虽然oo术语一直有点乱,但在传统概念中"类对象"是指"类的实例", 简称"类对象"或"类实例", 在C/C++/Java/C#...中都是这样.
可python提出了"类对象"和"实例对象", 我刚接触python官方教程时以为是一个东西, 但实际上是两个完全不同的玩意.
python官方对于"类"的说法是:
"a template for creating user-defined objects. Class definitions normally contain method definitions which operate on instances of the class"
这与C++中的概念是一致.
但"类对象"是啥呢? 我只找到只言片语:
"When a class definition is left normally (via the end), a class object is created"
"A class object can be called (see above) to yield a class instance (see below)."
"A class instance is created by calling a class object (see above)."
类对象是通过类定义产生的, 并且实例对象是通过调用类对象产生的.
既然是调用类对象产生的, 那类是干啥吃的?
想来想去给了自己一个目前认为最合理的解释:
python作为一门动态语言必须有能力在运行时改变类的结构,
所以就提出了python中的"类对象"概念, 通过它控制类结构.
因此python中的"类"或者说是"类定义"只是个初稿, 通过初稿产生的类对象才是真正的终稿.
或者也可以理解成python把"类"本身也抽象成了一种"类"(自我抽象), 这种类产生的对象叫类对象, 类对象才能产生实例对象.
而传统编译语言里比如C++并没有动态改变数据结构的需求, 类就是类定义本身.
因此产生python中的"类对象"是没有意义的. 也就不存在对等的概念了.
但是双方都能产生实例 {:10_257:}{:10_257:}{:10_257:} {:10_279:}{:10_279:}{:10_279:} 哇,学写了 还是没有懂,感觉好难理解,还是感谢{:5_95:} 我找到了一条解释蛮好的链接,发出来分享一下:
https://www.jianshu.com/p/9fb316cbf42e
页:
[1]