2

以下の Python スクリプトを実行すると異なる出力が得られる理由を誰か説明してもらえますか?

getattr(sys.modules['importme'], 'MyClass')で定義されたカスタム__repr__()関数を出力しない理由がわかりませんMyClass

printtest.py

#!/usr/bin/env python
import sys

import importme

def main():
    # This line prints "<class 'importme.MyClass'>"
    m = getattr(sys.modules['importme'], sys.argv[1])
    # This line prints "<MyClass {'text':, 'number':0}>"
    #m = importme.MyClass()
    print(m)

if __name__ == '__main__':
    main()

importme.py

class MyClass(object):
    text = ''
    number = 0

    def __init__(self, text = '', number = 0):
        self.text = text
        self.number = number

    def __repr__(self):
        return "<MyClass {'text':%s, 'number':%d}>" % (self.text, self.number)
4

1 に答える 1