Python交互式shell : how do I know what method gets used when I simply type the name of an object?

标签 python shell

当它是字符串或数字时,很清楚,分别打印

A="这是一个字符串"
B=3

A
this is a string
B
3

如果我有更复杂的对象怎么办?我问这个是因为我正在学习一个模块并且

A.name 
B.name 

结果为一行(实际上覆盖了先前的输入) 而

print (A.name)
print (B.name)

结果分为两行(正常行为)

最佳答案

如果您只是将一个对象放入控制台,__repr__ 方法将被调用,您将看到该方法返回的任何内容。显式打印使用__str__。如果没有 __str__print 将回退到 __repr__

演示:

>>> class A:
...     def __repr__(self):
...         return '__repr__'
...     def __str__(self):
...         return '__str__'
... 
>>> a = A()
>>> a
__repr__
>>> print(a)
__str__
>>> del A.__str__
>>> a
__repr__
>>> print(a)
__repr__
>>> del A.__repr__
>>> a
<__main__.A object at 0x7f4bdf0034a8>
>>> print(a)
<__main__.A object at 0x7f4bdf0034a8>

关于Python交互式shell : how do I know what method gets used when I simply type the name of an object?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52907825/

相关文章:

python - 在 Pandas 中映射

python - 在 django 中的单个 connection.cursor 上执行多个。安全吗?

node.js - 在 NodeJs spawn 中捆绑 shell 命令

c - 使用 grep/sort 删除一行中的多个换行符

linux - 内嵌shell不支持重定向: exec 2>>(logger -t myscript)

python - Django ModelAdmin 从 ModelForm 获取查询集

python - 如何拦截对特定页面的所有请求(以Python为例)

shell - 如何更改 shell/bash 中的列名?

Linux - 从当前目录中的文件名创建子目录

python - 如何在python中将列表拆分为给定数量的子列表