鱼C论坛

 找回密码
 立即注册
查看: 1474|回复: 3

[已解决]关于定制序列的问题

[复制链接]
发表于 2018-1-5 20:29:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
用自己定制的类获得实例对象的时候,要在类中怎样定义才能在打印实例对象时不显示类似于这样的<__main__.C object at 0x03DF4990>,而是像列表那样显示出自己的内容
从下面这个例子里帮我解释一下,十分感谢
  1. class C():
  2.     def __init__(self):
  3.         self.name = []

  4.     def get(self):
  5.         return self.name

  6.     def append(self, value):
  7.         self.name.append(value)
复制代码

在不使用继承的情况下怎样才能像列表那样显示内容?用魔法方法?可是我找不到关于这个直接显示的魔法方法啊,求大神指点!!!
  1. >>> c = C()
  2. >>> c
  3. <__main__.C object at 0x03DF4990>
  4. >>> c.append(2)
  5. >>> c
  6. <__main__.C object at 0x03DF4990>
  7. >>> a = [1, 2, 3]
  8. >>> a
  9. [1, 2, 3]
  10. >>>
复制代码
最佳答案
2018-1-5 21:42:01
如果你要实现打印实例显示内容
有2个魔术方法
__str__ #给人看的
__repr__ #给机器看的
但是 这2个方法 return 必须返回字符串
所以想达到你的想法
1继承list
2使用上面的方法返回类似 "[1, 2, 3]" 的字符串 #治标不治本
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-1-5 21:42:01 | 显示全部楼层    本楼为最佳答案   
如果你要实现打印实例显示内容
有2个魔术方法
__str__ #给人看的
__repr__ #给机器看的
但是 这2个方法 return 必须返回字符串
所以想达到你的想法
1继承list
2使用上面的方法返回类似 "[1, 2, 3]" 的字符串 #治标不治本
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-5 22:10:23 | 显示全部楼层
yjsx86 发表于 2018-1-5 21:42
如果你要实现打印实例显示内容
有2个魔术方法
__str__ #给人看的

我明白了,原来是__repr__()这个,我看了一下help(list)
关于__repr__()它是这么写的
  1. __repr__(self, /)
  2.        Return repr(self).
复制代码

我也这样写的话应该就可以了吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-5 22:10:55 | 显示全部楼层
yjsx86 发表于 2018-1-5 21:42
如果你要实现打印实例显示内容
有2个魔术方法
__str__ #给人看的

十分感谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-3-5 11:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表