python repr()和str()方法:

本文介绍了Python中的repr()和str()方法,它们用于将类的实例转换为字符串。str()方法通常用于客户端显示,而repr()用于后台研发调试。当类实现这两个特殊方法时,可以作为参数传递。通过重写这两个方法,可以自定义对象的显示方式。例如,创建了一个Student类和它的子类Collegestudent,展示了如何通过__str__()方法返回自定义的字符串表示。此外,还提到了format()函数如何与repr()和str()配合使用。
摘要由CSDN通过智能技术生成

总结:类如果包含了__str__(self) 或者 __repr__,就可以直接被当参数进行传参和调用

repr()和str()方法:作用相同,一种str是客户端显示,一种reor是后台研发调试显示
对于一个对象,python中提供了以上两种字符串的表示,它们的作用和repr()、str()、string.format()大体一致。

如果需要把一个类的实例变成str对象,就需要实现特殊方法str()
-字符串的format()函数也可以使用这些方法,当我们使用{!r}或者{!s}格式时,我们实际上分别调用了repr()或者str()方法。

class student(object):
    def __init__(self,name,grade,score):
        self.name=name
        self.grade=grade
        self.score=score
class collegestudent(student):
    def _status(self):
        return str(self.name),int(self.grade),int(self.score)
a=collegestudent('daxing','3','59')
print a
print str(a)

结果为

<__main__.collegestudent object at 0x0000000002EBCF60>, '<__main__.collegestudent object at 0x0000000002EBCF60>'

返回的是这个类的地址,并不能从中获得有效的东西
我们需要重写默认的repr()和str()

class student(object):
    def __init__(self,name,grade,score):
        self.name=name
        self.grade=grade
        self.score=score
    def __str__(self):
        return '(student: %s, %s, %s)'  %(self.name,self.grade,self.score)

#此处student,代表的是一个实例化对象,则参数实际为student的init参数

#正常是K-V格式:先有K(name ,age),实例时再传 V(张三,19)

#而此处是直接K-V作为一个封装完的字典一次传入。其中__str__(self)负责封装字典
class collegestudent(student):
    def _status(self):
        return str(self.name),int(self.grade),int(self.score)
a=collegestudent('daxing','3','59')
print a

结果为

(student: daxing, 3, 59)
==============================================================

优先执行__str__ ,然后执行repr

class A():

def __str__(self):
  return "__str__"
def __repr__(self):
  return "__repr__"
a = A()
print(a) ==> __str__

Python中,类的特殊方法`__repr__`和`__str__`都是用来返回对象的字符串表示形式,但是它们的用途和输出方式略有不同。 `__repr__`方法的作用是返回一个对象的“官方”字符串表示形式,通常包含足够的信息以便于重建该对象。在交互式环境中,直接输入对象名称并执行时,会自动调用该对象的`__repr__`方法。例如: ```python class Person: def __init__(self, name, age): self.name = name self.age = age def __repr__(self): return f"Person('{self.name}', {self.age})" p = Person('Alice', 25) print(p) # 输出:Person('Alice', 25) ``` `__str__`方法的作用是返回一个对象的可读性较好的字符串表示形式,通常用于打印输出和显示给用户看。当使用`str()`函数或者`print()`函数输出一个对象时,会自动调用该对象的`__str__`方法。例如: ```python class Person: def __init__(self, name, age): self.name = name self.age = age def __str__(self): return f"{self.name} is {self.age} years old" p = Person('Alice', 25) print(p) # 输出:Alice is 25 years old ``` 需要注意的是,如果一个对象没有定义`__str__`方法,但是定义了`__repr__`方法,则在使用`str()`函数或者`print()`函数输出该对象时,会默认使用`__repr__`方法返回的字符串表示形式。反之亦然,如果一个对象没有定义`__repr__`方法,则在交互式环境中直接输入该对象名称并执行时,会默认使用`__str__`方法返回的字符串表示形式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值