【问题标题】:__str__ not enough arguments for format string__str__ 格式字符串的参数不足
【发布时间】:2013-10-27 23:39:41
【问题描述】:

您好,我在尝试打印对象时遇到了 __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

谢谢

【问题讨论】:

  • 看起来不错。您可以为遇到的错误添加回溯吗?
  • 您的课程对我有用(已发布)-__str__()__repr__() 请发布创建实例并使用方法的语句。
  • 嗯,那到底是什么鬼?
  • @Matt,发布完整的程序,这样人们就可以运行与您运行的完全相同的程序。 “完整”是指足以引发错误的代码 - 不多也不少;-)
  • 或者您正在导入但未能调用reload(xxx)。调用import xxx 只会在之前未加载的情况下加载它,因此即使您保存(但未重新加载)新代码,python 也可能会看到旧代码。

标签: python string class


【解决方案1】:

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

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

import xxx

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

重新加载模块调用

reload(xxx)

如果您将东西导入为,也要小心

from xxx import yyy

致电reload xxx 不会影响您需要做的yyy

reload(xxx)
yyy = xxx.yyy

【讨论】:

    【解决方案2】:

    对我来说似乎工作正常:

    >>> 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
    >>> 
    >>> 
    

    【讨论】:

      猜你喜欢
      • 2015-11-16
      • 1970-01-01
      • 2020-04-10
      • 2020-04-12
      • 2012-06-24
      • 2020-10-17
      • 2015-10-16
      • 2012-06-11
      相关资源
      最近更新 更多