1. __str__()函数的作用
在Python中,我们可以使用__str__()
函数来定义对象的字符串表示形式。它用于返回一个字符串,可以被print
函数输出或在解释器中显示。如果没有定义__str__()
函数,那么打印对象时,将会输出对象的地址,而不是对象的具体内容。
1.1 __str__()函数与面向对象编程
面向对象编程是一种程序设计方法,它把对象作为程序的基础建设单元,通过封装、继承和多态等方式,实现程序的复用性和可维护性。在Python中,所有的变量都是对象,可以通过对对象的操作完成程序的逻辑。
1.2 __str__()函数的用法
在Python中,可以通过在类中增加__str__
函数,用于定义对象的字符串表示形式。其语法为:
def __str__(self):
# 返回对象的字符串表示形式
return 'something'
其中,self
表示对象本身,函数中的return
语句用于返回一个字符串,这个字符串表示对象的内容。
例如,在一个学生类中,我们可以定义__str__()
函数,用于返回学生的基本信息:
class Student:
def __init__(self, name, age, major):
self.name = name
self.age = age
self.major = major
def __str__(self):
return f'Student(name={self.name}, age={self.age}, major={self.major})'
s = Student('Tom', 20, 'Computer Science')
print(s)
输出结果为:
Student(name=Tom, age=20, major=Computer Science)
通过__str__()
函数,我们为学生类定义了字符串表示形式,可以轻松地输出学生的基本信息。
2. 使用__str__()函数定义对象
2.1 定义一个温度类
假设我们要定义一个温度类,用于计算摄氏度和华氏度之间的转换。
温度类中包含以下两个方法:
celsiusToFahrenheit(self, celsius)
:用于将摄氏温度转换为华氏温度。
fahrenheitToCelsius(self, fahrenheit)
:用于将华氏温度转换为摄氏温度。
其中,每个方法的参数都为温度值,返回值为转换后的温度值。
我们可以定义温度类如下:
class Temperature:
def celsiusToFahrenheit(self, celsius):
return (celsius * 1.8) + 32
def fahrenheitToCelsius(self, fahrenheit):
return (fahrenheit - 32) / 1.8
现在,我们可以创建一个Temperature对象,并调用其方法进行温度转换:
t = Temperature()
print(t.celsiusToFahrenheit(37.5)) # 输出结果为:99.5
print(t.fahrenheitToCelsius(99.5)) # 输出结果为:37.5
2.2 使用__str__()函数定义对象的字符串表示形式
现在,我们希望在打印Temperature对象时,能够输出对象所包含的信息。例如,输出当前对象所保存的摄氏度和华氏度的值。
这可以通过增加__str__()
函数来实现。我们可以在Temperature类中增加__str__()
函数,返回当前对象所包含的温度值信息:
class Temperature:
def __init__(self, celsius):
self.celsius = celsius
self.fahrenheit = self.celsiusToFahrenheit(celsius)
def celsiusToFahrenheit(self, celsius):
return (celsius * 1.8) + 32
def fahrenheitToCelsius(self, fahrenheit):
return (fahrenheit - 32) / 1.8
def __str__(self):
return f'Temperature(celsius={self.celsius}, fahrenheit={self.fahrenheit})'
t = Temperature(37.5)
print(t) # 输出结果为:Temperature(celsius=37.5, fahrenheit=99.5)
通过__str__()
函数,我们成功地将Temperature对象的信息输出到了屏幕上。
3. 总结
在Python中,__str__()
函数可以用来定义对象的字符串表示形式,以便在打印对象时,输出对象现有的信息。通过使用__str__()
函数,我们可以轻松地将一个对象转换为字符串,并输出相应的信息。
本篇文章以温度类为例,介绍了如何使用__str__()
函数定义对象的字符串表示形式。读者可以自行根据实际需求,定义适合自己的字符串表示形式。