如何让python类知道自己的名字

 收藏

你好

我有一个与自定义repr()方法一起使用的对象子类。

class NewClass(object):
    def __repr__(self):
        return ', '.join('%s=%s'%(k, v) for (k,v) in self.__dict__.items())

效果很好(省略了有关我的程序的更多详细信息):

test=NewClass(a=1,b=2)
print test
a=1, b=2

但是我真正想要的(由于不真正值得考虑的原因)也是在repr中打印出类名。例如,

print test
'NewClass: a=1, b=2'

但是python对象没有name属性。我宁愿不做一个单独的属性,又名:

class NewClass(object):
    name='NewClass'
    def __repr__(self):
        return name+', '.join('%s=%s'%(k, v) for (k,v) in self.__dict__.items())

有本机的方法吗?

谢谢

回复
  • ofbgg 回复

    谢谢。我已经尝试过了,一定有错字!

  • dab 回复

    >>> class NewClass(object):
        def __init__(self, **kwargs):
            self.__dict__.update(kwargs)
    
        def __repr__(self):
            return self.__class__.__name__ + ': '+ ', '.join('%s=%s'%(k, v) for (k,v) in self.__dict__.items())
    
    >>> test=NewClass(a=1,b=2)
    >>> test
    NewClass: a=1, b=2