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)

 


posted @ 2020-07-08 02:26  MINGZHUQI  阅读(247)  评论(0编辑  收藏  举报