我是python的新手.我研究过C,我注意到C结构(struct)似乎与python中的"class"具有相同的任务.那么,从概念上讲,差异是什么呢?
结构封装了数据.
类封装了行为和数据.
除了它们如何实现之间存在许多技术差异之外,它们的用途大致相同:数据组织.
最大的区别在于Python(以及其他面向对象的语言,如C++,Java或C#),一个类也可以有与之关联的函数,只在类的实例上运行,而在C中,一个函数,对结构进行操作必须以某种方式接受结构作为参数,通常是通过指针.
我不会深入研究两者之间的技术差异,因为它们相当重要,但我建议您研究面向对象编程的概念.
在不将页面和页面放入细节的情况下,将C结构视为组织数据的方式,而Python(或C++或Objective-C)"类"不仅可以组织数据,还可以组织操作对于那些数据.例如,Python"类"可以从其他对象继承,为您提供与之关联的数据的交互器(或者您可以在类中编写自己的交互器).还有更多话要说,我敢肯定,但这很快进入"什么是OOP",远远超出了这个线程的范围.
没有提到的一件事是C结构是值类型,而Python类是引用类型.
例如,请考虑以下声明:
var1 = var2
如果var1和var2是C结构,那么该语句会将var2的内容复制到var1中.这是按价值复制的.
但是,如果var1和var2是Python对象,那么该语句将使var1引用var2引用的对象.(它们就像是C中结构的指针.)这是通过引用的副本.
将参数传递给函数时会发生同样的事情(因为它们必须被复制才能进入函数).