はてブロ@ama_ch

https://twitter.com/ama_ch

動物の分類でクラスのお勉強

初めてのPython p.475

#!/usr/bin/env python
# -*- coding: utf-8 -*-
""" zoo.py
以下のような関係を持つクラスを定義し、対応する動物にふさわしいメッセージを表示する
      Animal
        |
      Mammal
   ┌---+---┐
  Cat  Dog  Primate
               |
             Hacker
"""

class Animal:
    def reply(self):
        self.speak()
    def speak(self):
        print "an Animal"

class Mammal(Animal):
    pass

class Cat(Mammal):
    def speak(self):
        print "nya-!"

class Dog(Mammal):
    def speak(self):
        print "wan!wan!"

class Primate(Mammal):
    def speak(self):
        print "Hello, World."

class Hacker(Primate):  # Primateのサブクラス
    pass

うはー、よくわかる!

>>> from classex import *
>>> animal = Animal()
>>> mammal = Mammal()
>>> tama = Cat()
>>> pochi = Dog()
>>> human = Primate()
>>> man = Hacker()
>>> 
>>> animal.speak()
an Animal
>>> mammal.speak()
an Animal
>>> tama.speak()
nya-!
>>> pochi.speak()
wan!wan!
>>> human.speak()
Hello, World.
>>> man.speak()
Hello, World.

同じようなことばっかり書いて疲れた・・・
クラス構造と上位に向けてメソッドを探しているのがわかります。