【问题标题】:Issue in using __repr__ function to return a non-string value from a method in a class [duplicate]使用 __repr__ 函数从类中的方法返回非字符串值的问题[重复]
【发布时间】:2023-01-13 17:54:23
【问题描述】:

我有一个包含 __init__ 方法的类,一个更改初始值的方法和一个要打印调整值的 __repr__ 函数

代码草稿如下

class Workflow: 
    def __init__(self, a): 
        self.a = a 
    
    def build(self):
        self.a += 1
        
    def __repr__(self): 
        value = self.build()
        return value

# Driver Code         
t = Workflow(1234) 
print(t)

我得到如下错误

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[71], line 3
      1 # Driver Code         
      2 t = Workflow(1234) 
----> 3 print(t)

TypeError: __str__ returned non-string (type NoneType)

我犯了什么错误? 在这种情况下,如果我想打印出被方法改变的值,我应该怎么做呢?

【问题讨论】:

  • 正如它所提到的,你没有从代表,它需要返回一个字符串。所以你应该回溯看看为什么这个值会是 None。想想build() 在做什么,您可能会发现问题所在。

标签: python


【解决方案1】:

build 不返回任何内容,因此值变量将为 None

例如你这样做:

    def build(self):
        self.a += 1
        
    def __repr__(self): 
        self.build()
        return str(self.a)

【讨论】:

    【解决方案2】:

    build 函数不返回任何内容,这就是为什么你在 value 中得到了 None

    【讨论】:

      【解决方案3】:

      这个怎么样:

      class Workflow:
      def __init__(self, a):
          self.a = a
      
      def build(self):
          self.a += 1
          return self.a
      
      def __repr__(self):
          value = self.build()
          return str(value)
      

      司机代码

      t = 工作流程(1234) 打印(t)

      【讨论】:

        猜你喜欢
        • 2012-11-23
        • 2015-08-18
        • 1970-01-01
        • 2021-12-14
        • 2015-03-04
        • 1970-01-01
        • 2023-03-17
        • 2016-01-18
        • 2021-06-18
        相关资源
        最近更新 更多