python类中的__repr__ 方法 || python类中的__str__方法(python类中的函数如何调用)

网友投稿 493 2022-08-28


python类中的__repr__ 方法 || python类中的__str__方法(python类中的函数如何调用)

python类中的__repr__ 方法

1、示例

代码如下:

class Person: def __init__(self, name, age): self.name = name self.age = ageif __name__ == '__main__': person1 = Person('吕星辰', 20) print('person1对象:', person1) print(person1.__repr__(), end='\n\n') person2 = Person('刘三炮', 22) print('person1对象:', person2) print(person2.__repr__())

运行结果:

解释:

①输出实例化的Person类,其实返回的是一个存在于内存中的Person类的对象;

②当输出Person类的实例对象时,实际上输出的是person对象的 __repr__ 方法的返回值;也就是说 print(person) 与 print(person.__repr__) 打印的结果相同。

print(person) # <__main__.Person object at 0x0025A6A0>print(person.__repr__) #

2、原理: __repr__ 类内置方法默认返回值的实现

class Person: def __init__(self, name, age): self.name = name self.age = age def __repr__(self): return '<{0}.{1} object at {2}>'.format(self.__module__, type(self).__name__, hex(id(self))) # 0模块名、1实例对象的类别,2实例对象内存地址16进制if __name__ == '__main__': person1 = Person('吕星辰', 20) print('person1对象:', person1) print(person1.__repr__(), end='\n\n') person2 = Person('刘三炮', 22) print('person1对象:', person2) print(person2.__repr__())

3、重写 __repr__ 方法

① __repr__ 是Python类中的一个特殊方法,由object对象提供,由于所有类都是object类的子类,所以所有类都会继承该方法!!!

② __repr__ 是一个 '自我描述' 的方法;实现功能: 当直接打印类的实例化对象时输出实例对象的自我描述信息,告诉外界该实例对象所具有的状态信息。

③但是由于object基类提供的 __repr__ 方法总是返回 类名 + obejct at + 内存地址 ,但是该值并不能真正实现自我描述的功能!!!所以可以重写 __repr__ 方法以达到实例对象自我描述的功能。

④代码如下:

class Person: def __init__(self, name, age): self.name = name self.age = age def __repr__(self): return 'Person类,包含name=' + self.name + '和age=' + str(self.age) + '两个实例属性'if __name__ == '__main__': person1 = Person('吕星辰', 20) print(person1) print(person1.__repr__(), end='\n\n') person2 = Person('刘三炮', 22) print(person2) print(person2.__repr__())

运行结果:

python类中的__str__方法

代码如下:

class Cat: """定义一个猫类""" def __init__(self, new_name, new_age): """在创建完对象之后 会自动调用, 它完成对象的初始化的功能""" # self.name = "汤姆" # self.age = 20 self.name = new_name self.age = new_age # 它是一个对象中的属性,在对象中存储,即只要这个对象还存在,那么这个变量就可以使用 # num = 100 # 它是一个局部变量,当这个函数执行完之后,这个变量的空间就没有了,因此其他方法不能使用这个变量 def __str__(self): """返回一个对象的描述信息""" # print(num) return "名字是:%s , 年龄是:%d" % (self.name, self.age) def eat(self): print("%s在吃鱼...." % self.name) def drink(self): print("%s在喝可乐..." % self.name) def introduce(self): # print("名字是:%s, 年龄是:%d" % (汤姆的名字, 汤姆的年龄)) # print("名字是:%s, 年龄是:%d" % (tom.name, tom.age)) print("名字是:%s, 年龄是:%d" % (self.name, self.age))# 创建了一个对象tom = Cat("汤姆", 30)print(tom)

解释:

①在python中方法名如果是 __xxxx__() 的,那么就有特殊的功能,因此叫做 魔法方法。

②当使用 print 语句输出实例对象的时候,只要自己定义了 __str__(self) 方法,那么就会打印从在这个方法中 return 的数据。

​​③ __str__ ​​方法需要返回一个字符串,当做这个实例对象的描述。

去期待陌生,去拥抱惊喜。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:python之序列化json.dumps()函数输出json格式,使用indent参数对输出进行json字符串格式优化,使用ensure_ascii参数对中文输入的支持
下一篇:python之内置函数的基本使用(python内置函数的使用方法)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~