Python中类的神奇方法
像 __init__() 这样的方法在 Python 的类中被称为 神奇方法(或魔术方法),它们的特征是被 双下划线 所包裹。下面再介绍一个神奇方法——__str__()。
在介绍 __str__() 之前我们先看一段代码:
class Human: arms = 2 legs = 2 hair = '各种颜色的头发' def walk(self): print('直立行走') def speak(self): print('说着各式各样的语言') human = Human() print(human) # 输出:<__main__.Human object>
我们可以看到,直接打印类的实例结果是 <__main__.Human object>,__main__.Human 表示它是 Human 类的实例,object 表示它是一个对象。但这样我们还是不知道 human 这个实例到底是什么。
当然可以用添加intro()的方法,如下:
def intro(self): print('人类有%d条胳膊%d条腿' % (self.arms, self.legs)) # 类的实例化 human = Human() human.intro()
但是这样有些麻烦,这时 __str__() 方法就闪亮登场了 ✨:class Human:
arms = 2
legs = 2
hair = '各种颜色的头发'
def __str__(self):
return '人类有%d条胳膊%d条腿' % (self.arms, self.legs)
def walk(self):
print('直立行走')
def speak(self):
print('说着各式各样的语言')
human = Human()
print(human)
# 输出:人类有2条胳膊2条腿
再举个例子:
class Human:
def __init__(self, name, heads, arms):
self.name = name
self.heads = heads
self.arms = arms
def __str__(self):
return '我叫{},我有{}头{}臂'.format(self.name, self.heads, self.arms)
nezha = Human('哪吒', 3, 6)
print(nezha)