1

您好,当我尝试打印我的对象时,我遇到了 __str__ 问题。解释器告诉我“TypeError:格式字符串的参数不足”

这是我要运行的代码!

    'My Practice Class' 
    class Directory:
        'A Simple Directory Class'

        def __init__(self, name, parent):
            self.name = name
            self.parent = parent

        def __str__(self):
            return 'I am %s a Child directory of %s' % (self.name, self.parent)

        def __repr__(self):
            return 'Directory(%r)' % self.name

print a
Traceback (most recent call last):
  File "<\stdin>", line 1, in <\module>  
  File "myclass.py", line 14, in \__str\__  
    def \__repr\__(self):  
TypeError: not enough arguments for format string

谢谢

4

2 回答 2

3

[从评论中移出,因为这可能是一个有用的路标问题]

如果您正在导入正在调用的模块

import xxx

第二次不重新导入更改的文件(python 试图变得聪明,看到你已经加载了该模块,从而缩短了进程)。发生的事情是您正在更改文件,但 python 从未看到这些更改。

重新加载模块调用

reload(xxx)

如果您将东西导入为

from xxx import yyy

打电话reload xxx不会影响yyy你需要做的

reload(xxx)
yyy = xxx.yyy
于 2013-10-19T02:19:23.983 回答
0

对我来说似乎工作正常:

>>> class Directory:
        'A Simple Directory Class'

        def __init__(self, name, parent):
            self.name = name
            self.parent = parent

        def __str__(self):
            return 'I am %s a Child directory of %s' % (self.name, self.parent)

        def __repr__(self):
            return 'Directory(%r)' % self.name


>>> a = Directory('Name', 'Parent')
>>> print(a)
I am Name a Child directory of Parent
>>> 
>>> 
于 2013-10-19T02:01:25.340 回答