如何在类中输出词典?

2024-09-28 22:33:53 发布

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

所以我上了这样的课:

class Useraccount():

def __init__(self, saving, checking, PIN):
    self.save = saving
    self.check = checking
    self.passwd = PIN

我想要这样的输出:

>>> a = Useraccount(2000,3000,1234)
>>> a
>>> {1234:[2000,3000]}

如何做到这一点,请帮帮我。你知道吗


Tags: selfinitsavedefcheckpinclasspasswd
3条回答

您可以在类上定义__repr__方法来格式化打印输出。你知道吗

class Useraccount():

    def __init__(self, saving, checking, PIN):
        self.save = saving
        self.check = checking
        self.passwd = PIN

    def __repr__(self):
        return '<Useraccount({pin}: [{saving}, {checking}])>'.format(pin=self.passwd, saving=self.save, checking=self.check)

示例:

>>> a = Useraccount(2000,3000,1234)
>>> a
<Useraccount(1234: [2000, 3000])>

因此,如果您使用的是Python2.x,那么应该重写unicode方法来表示Useraccount类的对象。你知道吗

def __unicode__(self):
    return '{%d: [%d,%d]}' % (self.save, self.check, self.passwd)

如果你用的是Python3.x

def __str__(self)
    return '{%d: [%d,%d]}' % (self.save, self.check, self.passwd)

其他答案修改__repr__,这只影响字符串表示。要实际输出字典,可以在UserAccount中定义以特定格式返回的方法:

class UserAccount(object):

    def __init__(self, saving, checking, PIN):
        self.save = saving
        self.check = checking
        self.passwd = PIN

    def asDict(self):
        return {self.passwd: [self.save, self.check]}

例如:

>>> user1 = UserAccount(10, 20, 1234)
>>> user1.asDict()
{1234: [10, 20]}

相关问题 更多 >