我正在钻研一些面向对象的编程。不幸的是,我连第一步都做不到。使用str将类转换为字符串。这是我的代码:
class Time:
def __init__(self, hours = 0, minutes = 0, seconds = 0):
self.hours = hours
self.minutes = minutes
self.seconds = seconds
def __str__(self):
return "basdfadsg"
time1 = Time
time1.hours = 3
time1.minutes = 23
time1.seconds = 13
print(time1)
每当我尝试
print(time1)
它又回来了
<class '__main__.Time'>
我做错什么了?
任何帮助都将不胜感激!
你的问题是:
您不是创建类Time的实例并将其传递给time1,而是将该类的类型传递给time1。
要使此代码按您所需工作,只需调用对象构造函数:
你可能在想“为什么有人需要一个变量来保存一个类型而不是一个实例?”好吧,在Python中,类定义(以及几乎所有其他东西)是第一类对象,可以在运行时修改,从而允许在类定义中动态添加/删除成员和成员函数。玩得开心点,这真是一场大爆炸。
您需要一个
Time
的实例。e、 g.time1 = Time()
(注意括号)。实际上,您正在修改类的类,而不是类的实例,并且
__str__
只告诉python如何从类的实例创建字符串,而不是类本身。。。如果您真的要为类和类的实例使用
__str__
或__repr__
,那么您需要这样使用元类:但是,正如其他人所说,更有可能您不是通过调用
__init__
来引用时间实例相关问题 更多 >
编程相关推荐