【问题标题】:My code will not print the value of s for some reason?由于某种原因,我的代码不会打印 s 的值?
【发布时间】:2021-03-26 18:14:45
【问题描述】:
class C:
    def __init__(self, v):
        self.v = v
    def i(self, d):
        self.v = self.v + d


s = [C(i) for i in range(1, 4)]
s1 = s[1]
s1.i(10)
print(s)

我运行这段代码并得到这个:

[<__main__.C object at 0x000001F911306160>, <__main__.C object at 0x000001F911341220>, <__main__.C object at 0x000001F911341520>]

我怎样才能让它变得可辨认,这样我就可以知道 s 是什么

【问题讨论】:

  • 你试过了吗:print(''.join(s))?由于数组是一个对象,它只会打印引用地址。您需要输出值。
  • 不要破坏您的帖子。通过在本网站上发布,您已不可撤销地授予 Stack Exchange 网络以CC BY-SA 4.0 license 分发该内容的权利,只要它认为合适即可。有关删除的替代方法,请参阅:I've thought better of my question; can I delete it?

标签: python list function class


【解决方案1】:

__repr__

class C:
    def __repr__(self):
        return "<{}>".format(self.v)
    def __init__(self, v):
        self.v = v
    def i(self, d):
        self.v = self.v + d


s = [C(i) for i in range(1, 4)]
s1 = s[1]
s1.i(10)
print(s)

输出

 [<1>, <12>, <3>]

【讨论】:

  • 您好,谢谢您,但是是否可以在某处使用此代码来获得 [C(1), C(12), C(3)] 的所需结果:def __str__(self) : 返回 f"C({self.v})"
  • 你可以随心所欲地使用它
【解决方案2】:

将您的代码更改为:

class C:
    def __init__(self, v):
        self.v = v
    def i(self, d):
        self.v = self.v + d
        return self.v

s = [C(i).i(10) for i in range(1, 4)]
print(s)

我纠正了一些小事情,但主要的是你必须returnself.viclass

【讨论】:

  • 您好,谢谢您,但是我需要代码返回 [C(1), C(12), C(3)]。这显然是我需要的最终结果
  • 我尝试使用此代码 def __str__(self): return f"C({self.v})" 但它没有返回预期的最终结果
  • @pizzapizza 我编辑了我的答案,请再次检查
  • 我检查过但它没有打印 [C(1), C(12), C(3)]。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-23
相关资源
最近更新 更多