mat*_*s25 8 python methods class
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)
Run Code Online (Sandbox Code Playgroud)
我是 python 的新手,最近我一直在做一些练习。我遇到了一个问题,我已经编写了相同的代码。但我反复收到错误:“add_time 未定义”。我尝试定义一个 main() 方法,但它没有打印任何内容。请帮忙。
您尚未为上述类创建对象。
类中的任何函数/方法只能由该类的对象访问。有关面向对象编程基础的更多信息,请查看此页面。
同时,要使其正常工作,请按以下方式定义您的类:
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)
Run Code Online (Sandbox Code Playgroud)
在 class 块之外,写下以下几行:
TimeObject = Time()
start=Time(9,45,00)
running=Time(1,35,00)
TimeObject.add_time(start,running)
print "done"
Run Code Online (Sandbox Code Playgroud)
但是,我建议您在类外编写 add_time 函数,因为您将对象作为参数传递给类中的同一个类中的函数,这在面向对象编程中被认为是一种糟糕的设计。希望能帮助到你。干杯!
| 归档时间: |
|
| 查看次数: |
27307 次 |
| 最近记录: |