类对象显示'类对象在...'

时间:2014-06-05 19:10:45

标签: python class

我想知道在python中创建一个类时,例如,类Car, 如果属性是汽车的品牌和年份,可以返回名称和品牌, 没有使用除

之外的任何东西
>>> c = Car('Toyota Camry', 2007)
>>> c

而不是返回<car object at 0x0000000003394FD0>

无论如何只返回

元组
('Toyota Camry', 2007)

没有在汽车类中实现__str__方法?

2 个答案:

答案 0 :(得分:3)

您实施__repr__ method;它是表示对象时使用的方法:

class Car:
    def __init__(self, make, year):
        self.make = make
        self.year = year

    def __repr__(self):
        return 'Car({!r}, {!r})'.format(self.make, self.year)

这会产生一个看起来就像原始类调用的表示字符串:

>>> class Car:
...     def __init__(self, make, year):
...         self.make = make
...         self.year = year
...     def __repr__(self):
...         return 'Car({!r}, {!r})'.format(self.make, self.year)
... 
>>> Car('Toyota Camry', 2007)
Car('Toyota Camry', 2007)

答案 1 :(得分:0)

使用__repr__代替__str__

__repr__ 表示对象,而__str__仅使用print()进行调用。

为此,请使用以下内容:

class Car:

    def __init__(self, model, year):
        self.model = model
        self.year = year

    def __repr__(self):
        return str((self.model, self.year))

这将运行:

>>> camry = Car('Toyota Camry', 2006)
>>> camry
('Toyota Camry', 2006)
>>>