栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

我可以为类而不是实例定义__repr__吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

我可以为类而不是实例定义__repr__吗?

您需要

__repr__
在元类上定义。

class meta(type):    def __repr__(cls):        return 'My class %s' % cls.__name__class A(object):    __metaclass__ = meta

__repr__
返回对象实例的表示形式。因此,通过定义
__repr__
on
A
,可以指定想要
repr(A())
的外观。

要定义类的表示形式,您需要定义如何

type
表示其实例。在这种情况下,请
type
使用
__repr__
根据需要定义的自定义元类替换。

>> repr(A)My class A

如果您想

__repr__
为每个类定义一个自定义,我不确定是否有一种特别干净的方法。但是你可以做这样的事情。

class meta(type):    def __repr__(cls):        if hasattr(cls, '_class_repr'): return getattr(cls, '_class_repr')()        else: return super(meta, cls).__repr__()class A(object):    __metaclass__ = meta    @classmethod    def _class_repr(cls):        return 'My class %s' % cls.__name__class B(object):    __metaclass__ = meta

然后,您可以按班级进行自定义。

>> repr(A)My class A>> repr(B)<__main__.B object at 0xb772068c>


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/640567.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号