是否可以避免上课?

时间:2018-12-17 16:57:42

标签: python oop

使用面向对象的范例进行编程是开发大型程序时的一种最佳实践方法。这是Java社区,C ++社区以及Python社区的观点。在所有这些语言中,都可以使用“ class”语句创建一个子空间,在该子空间中声明局部变量和局部方法。但是,如果这个概念是错误的呢?

普通C程序员从未使用过类,而是将源代码分组在文件中。 File1是class1,file2是class2,依此类推。在每个文件的顶部都使用一个结构来管理变量。根据c程序员的说法,此概念非常有效。但是,Forth程序员也不相信面向对象编程是一个好主意。在新的Forth200x标准中,没有用于分类的词,而是Forth社区也将源代码也分组在文件中,通常称为屏幕。看起来,无类的面向对象编程是可能的。让我们用Python构建一个简单的示例。

classlessgui

### main.py ###
import physics, gui

def main():
  gui.widgetinput.bind("<Return>", parseinput)
  gui.tkwindow.mainloop() 
def parseinput(event):
  name=gui.widgetinput.get()
  if name=="move":
    physics.move(20,0)
  print physics.player

main()

### physics.py ###
player=(100,100)

def move(x,y):
  global player
  player=(player[0]+x,player[1]+y)

### gui.py ###
import Tkinter

tkwindow = Tkinter.Tk()
tkwindow.geometry("650x400")
# info
widgetinfo = Tkinter.Label(tkwindow, text="input")
widgetinfo.place(x=100, y=100)
# input
widgetinput = Tkinter.Entry(tkwindow)
widgetinput.place(x=140, y=100)

令人惊讶的是,该程序将在没有任何错误消息的情况下从python解释器开始。如果用户在文本字段中输入命令“ move”,则将请求发送到物理模块并更新位置。在面向对象的编程风格中,每个模块都等于一个类,但是在源代码中,没有使用显式的类。

无类编程风格的名称是什么?是否可以从软件工程方面这样做?

2 个答案:

答案 0 :(得分:4)

它称为procedural programming,如果您要使用它,没有任何理由回避它。许多Python脚本可以看作是程序性的,因为它们是自上而下运行的,并且经常按此顺序散布命令和操作。

涉及类的另一范式称为object-oriented programming

只要您和代码的其他贡献者都同意该范例,就可以使用任意一个

答案 1 :(得分:1)

Python可以是object oriented languagefunctional languageprocedural language。仅面向对象的语言使用类和对象。它们都可以正常工作,因此您可以选择任何一个。但是,有些库需要使用这些范式之一,因此您可能需要使用某些库通常不使用的库。