为什么我的Digonaus类在0x026B5210>处给出了一个<\uu main\uuuuu.Digonaus对象错误?

2024-06-01 09:53:16 发布

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

我写了这节课:

class Dinosaurus:

    def __init__(self, nimi, suurus, värv, toit):
        self.nimi = nimi
        self.suurus = suurus
        self.värv = värv
        self.toit = toit

但是当我试着用它的时候。。。你知道吗

Dinosaur = Dinosaurus ("Stegosaurus", "20", "sinine", "Liha")

print(Dinosaur)

我得到一个错误:

<__main__.Dinosaurus object at 0x026B5210>

我做错什么了?你知道吗


Tags: selfinitdef错误classprintnimirv
1条回答
网友
1楼 · 发布于 2024-06-01 09:53:16

<__main__.Dinosaurus object at 0x026B5210>不是错误–它是对象的表示。你知道吗

一些实验表明Dinosaur具有您分配给它的所有属性:

>>> Dinosaur = Dinosaurus ("Stegosaurus", "20", "sinine", "Liha")
>>> Dinosaur
<__main__.Dinosaurus object at 0x7f893d9b5320>
>>> Dinosaur.nimi
'Stegosaurus'
>>> Dinosaur.suurus
'20'
>>> Dinosaur.värv
'sinine'
>>> Dinosaur.toit
'Liha'

如果要更改打印类实例时显示的表示形式,则需要编写一个特殊的^{}方法来告诉Python应该如何表示它们,例如:

class Dinosaurus:

    def __init__(self, nimi, suurus, värv, toit):
        self.nimi = nimi
        self.suurus = suurus
        self.värv = värv
        self.toit = toit

    def __repr__(self):
        return 'Dinosaurus(%r, %r, %r, %r)' % (self.nimi, self.suurus, self.värv, self.toit)

>>> Dinosaur = Dinosaurus ("Stegosaurus", "20", "sinine", "Liha")
>>> print(Dinosaur)
Dinosaurus('Stegosaurus', '20', 'sinine', 'Liha')

您还可以定义一个^{}方法,如果同时定义了这两个对象,那么在打印对象时,Python将优先使用该方法。您应该将__str__看作是返回一个对象的非正式的、人性化的表示,而将__repr__看作是正式的表示(如果可能的话,它应该是一个有效的Python表达式,可以用来生成它的精确副本,如我上面的示例所示)。你知道吗

相关问题 更多 >