类(Python)和结构(C)之间的区别

时间:2009-03-01 00:03:43

标签: python c

我是python的新手。我研究过C,我注意到C结构(struct)似乎与python中的“class”具有相同的任务。那么,从概念上讲,差异是什么呢?

5 个答案:

答案 0 :(得分:21)

结构封装数据。

类封装了行为和数据。

答案 1 :(得分:10)

除了实施方式之间的众多技术差异之外,它们的用途大致相同:数据组织。

最大的区别在于,在Python(以及其他面向对象的语言,如C ++,Java或C#)中,类也可以具有与之关联的函数,这些函数仅在类的实例上运行,而在C中,希望对结构进行操作的函数必须以某种方式接受结构作为参数,通常是通过指针。

我不会深入研究两者之间的技术差异,因为它们相当重要,但我建议你研究Object Oriented Programming的概念。

答案 2 :(得分:5)

不将页面和页面放入细节中,可以将C结构视为组织数据的一种方式,而Python(或C ++或Objective-C)“类”是一种不仅可以组织数据的方法,但该数据的操作。例如,Python“类”可以从其他对象继承,为您提供与之关联的数据的交互器(或者您可以在类中编写自己的交互器)。还有更多话要说,我敢肯定,但这很快就会进入“什么是OOP”,远远超出了这个主题的范围。

答案 3 :(得分:5)

有一件事没有提到,C结构是值类型,而Python类是引用类型。

例如,请考虑以下声明:

var1 = var2

如果var1和var2是C结构,那么该语句会将var2的内容复制到var1中。这是按值复制

但是,如果var1和var2是Python对象,那么该语句将使var1引用var2所引用的对象。 (它们就像是C中结构的指针。)通过引用复制

将参数传递给函数时会发生同样的事情(因为必须复制它们才能进入函数)。

答案 4 :(得分:3)

类通常具有与它们相关联的方法(主要是函数),而C结构则没有。如果你想有效地使用Python(或任何其他面向对象语言,如Java或C ++)中的类,你可能想要了解面向对象编程是什么。

当然,可以像使用C结构一样使用Python类作为数据容器。但这种情况并不经常发生。

相关问题