__str\uuu不工作python

2024-05-16 04:24:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在钻研一些面向对象的编程。不幸的是,我连第一步都做不到。使用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'>

我做错什么了?

任何帮助都将不胜感激!


Tags: 字符串selftimedef编程面向对象classseconds
3条回答

你的问题是:

time1 = Time

您不是创建类Time的实例并将其传递给time1,而是将该类的类型传递给time1。

要使此代码按您所需工作,只需调用对象构造函数:

time1 = Time()

你可能在想“为什么有人需要一个变量来保存一个类型而不是一个实例?”好吧,在Python中,类定义(以及几乎所有其他东西)是第一类对象,可以在运行时修改,从而允许在类定义中动态添加/删除成员和成员函数。玩得开心点,这真是一场大爆炸。

您需要一个Time实例。e、 g.time1 = Time()(注意括号)。

实际上,您正在修改类的,而不是类的实例,并且__str__只告诉python如何从类的实例创建字符串,而不是类本身。。。

如果您真的要为类和类的实例使用__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__来引用时间实例

相关问题 更多 >