python中类的方法self,实体类的构造方法

2022年 10月 20日 发表评论
腾讯云正在大促:点击直达 阿里云超级红包:点击领取
免费/便宜/高性价比服务器汇总入口(已更新):点击这里了解

文章目录 引言描述用法参考

引言

类的 __repr__() 方法定义了实例化对象的输出信息,重写该方法,可以输出我们想要的信息,对类的实例化对象有更好的了解。

描述

object.__repr__(self)

Called by the repr() built-in function to compute the “official” string representation of an object. If at all possible, this should look like a valid Python expression that could be used to recreate an object with the same value (given an appropriate environment). If this is not possible, a string of the form <…some useful description…> should be returned. The return value must be a string object. If a class defines __repr__() but not __str__(), then __repr__() is also used when an “informal” string representation of instances of that class is required.

由 repr() 内置函数调用以输出一个对象的“官方”字符串表示。如果可能,这应类似一个有效的 Python 表达式,能被用来重建具有相同取值的对象(只要有适当的环境)。如果这不可能,则应返回形式如 <...一些有用的描述信息...> 的字符串。返回值必须是一个字符串对象。如果一个类定义了 __repr__() 但未定义 __str__(),则在需要该类的实例的“非正式”字符串表示时也会使用 __repr__()。

一句话概括就是: 类可以通过定义 __repr__() 方法来控制此函数为它的实例所返回的内容。

用法

运行:

class Std: def __init__(self, name, age): self.name = name self.age = ageprint(Std('john', 18))

输出:

<__main__.Std object at 0x000001ADB0530C10>

从上述代码的运行结果可以看到,打印类的实例化对象,默认输出是 <类名+ object at +内存地址>,该输出太抽象了,对我们了解类的实例化对象没有什么帮助。

如何自定义类的实例化对象的输出呢?这里就需要重写 __repr__() 方法了。

重写方式如下,添加 __repr__() 方法,返回一个自定义的字符串即可,字符串里面可以包含任何你想包含的、关于该实例化对象的信息。

运行:

class Std: def __init__(self, name, age): self.name = name self.age = age def __repr__(self): return f'Std(name={self.name}, age={self.age})'print(Std('john', 18))

输出:

Std(name=john, age=18) 参考

https://docs.python.org/3/reference/datamodel.html#object.repr

60079734

小咸鱼

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: