打印字符串并在类中执行函数[Python]

时间:2014-01-21 19:10:24

标签: python function class

对于我的学校作业,我们必须编写一个程序来模拟交通信号灯。我有程序工作唯一的问题是代码有点乱,因为我不知道如何正确使用类。文档让我感到困惑(有点像菜鸟)。

所以我只是复制了我想要多次更改变量的函数并手动更改了变量。我知道可以用类做这个,只需用正确的变量创建这个类的实例,但我似乎可以让它工作。这是我想要实现的“伪代码”中的一个小例子。

此代码是一个计时器,用于指示交通信号灯亮起的时间。我想创建一个可以接受一边(leftrightfrontback)的类并打印此字符串,这样我就不必复制代码并手动编写进入一边。但我可以用其中一方制作一个实例。

import time

class trafficlight_timer:
    def __init__(self, side1):
        self.side = side1

    def trafficlight(self, side1):
        s = 0
        b = 5
        t_max = 10
        print self.side,  "is green"
        if b > t_max:
            b = t_max
        while s <= 60:
            time.sleep(1)
            s += 1
            if s == b:
                print self.side, "is red"
                print self.side, "was green for %d seconds." % s
                print ""
                s = 65
    trafficlight()

instance_left = trafficlight_timer('left')

如果有人能指出我应该怎么做,我将非常感激。非常感谢提前!

1 个答案:

答案 0 :(得分:2)

你有什么问题?我没有尝试运行它,但它看起来对我很好,除了你通常不会从类体内调用trafficlight()(甚至可能不是合法的语法,我不确定)。

import time

class trafficlight_timer:
    def __init__(self, side1):
        self.side = side1

    def trafficlight(self):
        s = 0
        b = 5
        t_max = 10
        print self.side,  "is green"
        if b > t_max:
            b = t_max
        while s <= 60:
            time.sleep(1)
            s += 1
            if s == b:
                print self.side, "is red"
                print self.side, "was green for %d seconds." % s
                print ""
                s = 65

instance_left = trafficlight_timer('left')
instance_left.trafficlight()

我所做的唯一更改是从类正文中删除trafficlight(),从side1函数中删除冗余且未使用的trafficlight参数,然后在trafficlight()上调用instance_left left is green left is red left was green for 5 seconds. 个实例。输出如下:

{{1}}

如果这不是您想要的,请更详细地描述您对输出的期望以及您获得的不良输出。