-2

我是python的新手程序员,我正在考虑python的类用法。尽管可以在脚本中导入所有函数,但使用类结构可能会面临什么情况。有没有哪位 Python 高手启发了我?

因此,作为一个示例,您可能希望将代码组合成面向对象的结构,但是类中的函数集合也可能被编码到脚本文件中(我猜是 python 术语中的模块),我可以从任何调用者那里导入这些函数模块而不是扩展类。使用类还包括考虑类层次结构的一致性,因此我认为使用普通模块在开发时间成本方面更好。这是真的还是错过了什么?

那么,除了类之外,还有什么不能由函数模块完成的吗?

4

2 回答 2

1

面向对象编程有很多与函数不同的东西。

有继承和其他东西,但我注意到使它与函数不同的唯一两个好处是封装和信息共享。同一枚硬币的两面。

维基百科上的封装

据我所知,一般来说信息共享没有任何好的解释。对我来说,有时将数据放在一组我可以传递和操作的数据中会更容易。作为数据的属性、方法、继承和对象都是信息共享的一部分。对于函数,通常您将获得的所有信息共享都是函数参数、全局变量和返回值。在 python 的情况下,还有函数装饰器,这是一个完全不同的主题。还有其他语言可以做装饰器,但在 python 中它们是特殊的。

第三个可能的好处是分类。一个类下的方法和属性可以适合该类所代表的类别。尽管您可以通过模块和函数来实现这一点——类提供了额外的抽象级别并具有前面提到的好处。

于 2013-05-12T21:21:55.977 回答
0

这取决于您是否采用面向对象的方法,这在 Python 中不是强制性的,但可能会大大增强您的编程资源。

使用(和导入)类使您能够从它们继承并实例化它们,创建更多的类和对象来填充您的程序。

您可以编写一个包含函数 func1 和 func2 的 module1,然后导入 module1 并调用 module1.func1() 和 module1.func2()。您没有扩展任何课程。

您可以编写一个包含类 class1 的模块 2,并在 class1 中定义方法 func1 和 func2。当您导入模块2时,您必须创建一个对象

obj1 = module2.class1()

调用方法 obj1.func1() 和 obj1.func2()。这将是面向对象的方法。

我相信你可以用这两种方法中的任何一种来解决任何问题

于 2013-05-12T21:02:07.127 回答