__str__不工作python
问题描述:
我正在潜入一些面向对象的编程。不幸的是,我甚至无法迈出第一步。使用str将类转换为字符串。这里是我的代码:__str__不工作python
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
。例如(注意括号)。
正因为如此,要修改的类,不是实例的类的 - 而__str__
只告诉蟒蛇如何从类的实例创建的字符串,而不是类本身...
答
你的问题是在这里:
time1 = Time
没有创建上课时间的实例,并传递一个到该时间点,而是逝去的那个类的类型时间1。
可根据需要有这样的代码工作,只需调用对象的构造函数:“为什么会有人需要一个变量来保存一个类型,而不是实例的”
time1 = Time()
你也许会想那么,在Python中,类定义(以及其他几乎所有的东西)都是第一类对象,可以在运行时修改它们,以便动态地将成员和成员函数添加到类定义中或从类定义中删除。玩得开心pythoning,它确实是一个爆炸。
+0
谢谢,同样有帮助! – 2013-03-08 19:07:40
答
如果你真的是想有一类VS类的一个实例__str__
或__repr__
,你需要使用元类是这样的:正如其他人所说
>>> class Test(type):
... def __repr__(self):
... return 'Test is my name'
...
>>> class MT(object):
... __metaclass__=Test
...
>>> print MT
Test is my name
但是,它更很可能你并不是通过调用__init__
这是非常快的。 – 2013-03-08 18:54:22
@MarkRansom - 我想是在正确的时间。 – mgilson 2013-03-08 18:55:11
我想知道是否有可能为类对象本身添加一个__str__方法?不是说它会有用,我只是好奇。 – 2013-03-08 18:58:11