私はクラスの__repr__ではなく、インスタンスを定義することはできますか?
確かに、私はrepr
テストに合格し__repr__
と、ここに示しています。
class Type(type):
def __repr__(cls):
"""
>>> Type('Baz', (Foo, Bar,), {'__module__': '__main__', '__doc__': None})
Type('Baz', (Foo, Bar,), {'__module__': '__main__', '__doc__': None})
"""
name = cls.__name__
parents = ', '.join(b.__name__ for b in cls.__bases__)
if parents:
parents += ','
namespace = ', '.join(': '.join(
(repr(k), repr(v) if not isinstance(v, type) else v.__name__))
for k, v in cls.__dict__.items())
return 'Type(\'{0}\', ({1}), {{{2}}})'.format(name, parents, namespace)
def __eq__(cls, other):
return (cls.__name__, cls.__bases__, cls.__dict__) == (
other.__name__, other.__bases__, other.__dict__)
そして実証する:
class Foo(object): pass
class Bar(object): pass
いずれかをPythonの2:
class Baz(Foo, Bar):
__metaclass__ = Type
やPython 3:
class Baz(Foo, Bar, metaclass=Type):
pass
それともかなり普遍:
Baz = Type('Baz', (Foo, Bar), {})
>>> Baz
Type('Baz', (Foo, Bar,), {'__module__': '__main__', '__doc__': None})
そしてrepr
テストを行うに:
def main():
print Baz
assert Baz == eval(repr(Baz))
repr
テストはどのようなものですか?repr
に関する上記のテストの結果です。
>>> help(repr)
Help on built-in function repr in module __builtin__:
repr(...)
repr(object) -> string
Return the canonical string representation of the object.
For most object types, eval(repr(object)) == object.
問題が誤解されました。別の(うまくいけば正しい)回答を投稿してください。 –