使用LearnPythonTheHardWay尝试ex43.py(制作游戏)并使用time.sleep()
在事件之间创建暂停。为了启用和禁用该功能,或更改暂停的长度,我只是在class Engine()
中保存一个变量,该变量是从整个程序中time.sleep()
的调用中引用的。
所以:
import time
class Engine(object):
sleep1 = 1
#some methods
def say_hello(self, exit):
self.exit = exit
print "Hello"
time.sleep(Engine.sleep1)
self.exit.say_goodbye()
class Another(object):
def say_goodbye(self):
print "ok"
time.sleep(Engine.sleep1)
print "goodbye."
me = Engine()
bye = Another()
me.say_hello(bye)
问题是,如果我希望time.sleep(1)
可用于各种类的多个方法,是否需要将它作为参数传递给需要它的每个方法:
import time
class Engine(object):
sleep1 = 1
#some methods
def say_hello(self, exit):
self.exit = exit
print "Hello."
time.sleep(Engine.sleep1)
pause = time.sleep
self.exit.say_goodbye(pause)
class Another(object):
def say_goodbye(self, pause):
self.pause = pause
print "ok"
self.pause(Engine.sleep1)
print "goodbye."
me = Engine()
bye = Another()
me.say_hello(bye)
为了只有一个地方可以设置暂停的长度,是否可以通过任何方法简单地调用time.sleep(Class.var)
?
答案 0 :(得分:1)
从我所看到的情况来看,除了你想在游戏中改变它之外,我没有在课堂上获得sleep1
的优势。
传递time.sleep(1)
看起来很乏味。我会说每次调用time.sleep(Class.var)
都可以,并使代码更清晰。
我还测试了你的代码并传递暂停并没有给它带来任何好处:
self.pause(Engine.sleep1)
来调用它,这是time.sleep(Engine.sleep1)
的一个奇怪的别名。一秒钟没有被记住,所以你必须再次输入time.sleep()
以下编辑 保持简单。 time.sleep(Engine.sleep1)
很好。
一个小小的补充:如果你只等待特定的功能,调用time.sleep()
就完全没问了。但是如果你在每个功能之后都这样做,也许你可以做一些"动作队列"并在每个功能完成后调用time.sleep()
。因此,如果您的逻辑发生变化,您可以更新一行代码。
编辑:要保留time.sleep()
的功能及其参数,我会执行以下操作:
MY_SLEEP = 1
def my_pause():
time.sleep(MY_SLEEP)
my_pause() # waits 1 second
my_pause() # waits 1 second again.
但又一次,你可以简单地说:
time.sleep(MY_SLEEP)
每次......
编辑2
在这里,我将这个想法与静态方法和打印结合到say()
函数中。
import time
MY_SLEEP = 1 # inside a config file
class Engine(object):
@staticmethod
def say(text):
print(text)
time.sleep(MY_SLEEP)
#some methods
def say_hello(self, exit):
Engine.say("Hello")
exit.say_goodbye()
class Another(object):
def say_goodbye(self):
Engine.say("ok")
Engine.say("goodbye")
me = Engine()
bye = Another()
me.say_hello(bye)
当我谈论一个动作队列时,它更像是一个列表,其中包含每轮调用哪个类/函数/ arg。然后循环将pop
每回合一个元素来自队列,执行操作,等待一秒钟然后重新开始。
答案 1 :(得分:1)
我使用的方法是创建一个模块,其中包含其他模块,类及其方法可能需要的所有常量和简单的辅助方法,因此它甚至不是一个类,例如helper.py模块看起来像这样:
var1 = 1
var2 = 2
def method1():
...
def method2():
...
我会把那个helper.py放到一个库中,比如mylib,然后从其他模块,类和可执行文件中使用它:
from mylib import helper
print helper.var1
helper.method1()
helper.method2()
毋庸置疑,我不需要用这种方法实例化任何东西。