Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 允许逃课吗?_Python_Oop - Fatal编程技术网

Python 允许逃课吗?

Python 允许逃课吗?,python,oop,Python,Oop,面向对象编程是开发大型程序的一种最佳实践方法。这就是java社区、C++社区和Python社区的观点。在所有这些语言中,都可以使用“class”语句创建一个子空间,在其中声明局部变量和局部方法。但是,如果这个概念是错误的呢 普通C程序员从不使用类,而是将源代码分组到文件中。File1是class1,file2是class2,依此类推。在每个文件的顶部,使用一个结构来管理变量。根据c程序员的说法,这个概念非常有效。但是Forth程序员也不相信面向对象编程是个好主意。在新的Forth200x标准中,

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

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

####main.py###
导入物理,gui
def main():
gui.widgetinput.bind(“,parseinput)
gui.tkwindow.mainloop()
def解析输入(事件):
name=gui.widgetinput.get()
如果名称==“移动”:
物理。移动(20,0)
打印物理.player
main()
###物理学.py###
玩家=(100100)
def移动(x,y):
全球玩家
玩家=(玩家[0]+x,玩家[1]+y)
###gui.py###
进口Tkinter
tkwindow=Tkinter.Tk()
tkwindow.几何(“650x400”)
#信息
widgetinfo=Tkinter.Label(tkwindow,text=“input”)
widgetinfo.place(x=100,y=100)
#输入
widgetinput=Tkinter.Entry(tkwindow)
widgetinput.place(x=140,y=100)
令人惊讶的是,这个程序将在没有任何错误消息的情况下使用python解释器启动。如果用户在文本字段中输入“移动”命令,将向物理模块发送请求,并更新位置。在面向对象编程风格中,每个模块都相当于一个类,但在源代码中没有使用显式类

无类编程风格的名称是什么?它是从软件工程的角度被允许这样做的吗?

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

另一个涉及类的范例称为


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

Python可以是,或。只有面向对象的语言使用类和对象。它们都很好用,所以你可以选择任何一个。但是,有些库需要使用这些范例之一,因此您可能需要使用一些库中通常不使用的范例。

允许使用什么取决于您的项目和公司指南“普通C程序员从不使用类”,因为C没有类。还有很多其他的编程范例:我不确定我是否看到了上面的程序工作时特别令人惊讶的地方…@AKX令人惊讶的是,模块的子函数是用“physics.move()”调用的。这意味着,它引用了一个外部文件。在面向对象编程中,这一原则非常常见,因为可以从对象调用方法。但是这里没有对象,而是模块分布在文件上。这意味着,它不是完全反oop的,因为存在某种层次结构。我不确定,在什么情况下这种编程风格会破坏一切。我会说,这看起来是错误的,但我不知道为什么。亲密选民:OP不知道什么是范例。这里没有意见。
### 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)