在类-Python 中调用方法

新手上路,请多包涵
class Time:

    def __init__(self,x,y,z):
        self.hour=x
        self.minute=y
        self.second=z

    def __str__(self):
        return "({:02d}:{:02d}:{:02d})".format(self.hour, self.minute, self.second)

    def time_to_int(time):
        minutes=time.hour*60+time.minute
        seconds=minutes*60+time.second
        return seconds

    def int_to_time(seconds):
        time=Time()
        minutes,time.second=divmod(seconds,60)
        time.hour,time.minute=divmod(minutes,60)
        return time

    def add_time(t1,t2):
        seconds=time_to_int(t1)+time_to_int(t2)
        return int_to_time(seconds)

start=Time(9,45,00)
running=Time(1,35,00)
done=add_time(start,running)
print(done)

我是 python 的新手,最近一直在做一些练习。我遇到了一个问题,我已经为它编写了代码。但是我反复收到错误消息:“add_time is not defined”。我尝试定义一个 main() 方法,但它没有打印任何东西。请帮忙。

原文由 mathers25 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 606
2 个回答

您尚未为上述类创建对象。

类中的任何函数/方法只能由该类的对象访问。有关面向对象编程基础知识的更多信息,请查看 页面。

同时为了使它起作用,请按以下方式定义您的类:

 class Time:

def __init__(self,x=None,y=None,z=None):
    self.hour=x
    self.minute=y
    self.second=z

def __str__(self):
    return "({:02d}:{:02d}:{:02d})".format(self.hour, self.minute, self.second)

def time_to_int(time):
    minutes=time.hour*60+time.minute
    seconds=minutes*60+time.second
    return seconds

def int_to_time(seconds):
    time=Time()
    minutes,time.second=divmod(seconds,60)
    time.hour,time.minute=divmod(minutes,60)
    return time

def add_time(t1,t2):
    seconds=time_to_int(t1)+time_to_int(t2)
    return int_to_time(seconds)

在类块之外,写下以下几行:

 TimeObject = Time()
start=Time(9,45,00)
running=Time(1,35,00)
TimeObject.add_time(start,running)
print "done"

然而,我建议你在类之外编写 add_time 函数,因为你将对象作为参数传递给类,作为同一类中函数的参数,这在面向对象编程中被认为是一个糟糕的设计。希望能帮助到你。干杯!

原文由 crazyglasses 发布,翻译遵循 CC BY-SA 3.0 许可协议

class Employee:
    def __init__(self):
        self.wage = 0
        self.hours_worked = 0

    def calculate_pay(self):
        return self.wage * self.hours_worked

alice = Employee()
alice.wage = 9.25
alice.hours_worked = 35
print('Alice:\n Net pay: {:.2f}'.format(alice.calculate_pay()))

barbara = Employee()
barbara.wage = 11.50
barbara.hours_worked = 20
print('Barbara:\n Net pay: {:.2f}'.format(barbara.calculate_pay()))

原文由 Alfredo Romero 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题