39Si

プログラミング関連の勉強した内容を簡単にまとめておきます

オブジェクト指向の勉強[Python]

オブジェクト指向の勉強

オブジェクト指向についてドットインストールさんの Python の Lesson で
解説されていたのを見つけたのでメモしておきます。

今までは、どういうものかというイメージぐらいは持っていましたが、
内容は全然理解してませんでした。

まず、オブジェクト指向の定義は
オブジェクト同士の相互作用として、システムの振る舞いをとらえる考え方である。(wikiより)

用語について
- オブジェクトは変数や関数をまとめたもの
- クラス : オブジェクトの設計図
- インスタンス : クラスを実体化したもの

イメージは、オブジェクトという枠組み(クラス)を作ってそれに実体を与える(インスタンス)解釈でいいかな。

object_test.py

#! /usr/bin/python
#-*- coding:utf-8 -*-

# クラス
class Person(object):
    def __init__(self,name): # 最初に実行される関数
        self.name = name
    def greet(self):
        print "my name is %s"%self.name

#main
bob = Person("Bob") # インスタンスの作成
print bob.name
bob.greet()
tom = Person("Tom") # インスタンスの作成
tom.greet()

[実行結果]

Bob
my name is Bob
my name is Tom

クラスの継承

クラスの継承について

object_test2.py

#!/usr/bin/env python
#coding:utf-8

# クラス
class Person(object):
    def __init__(self,name): # 最初に実行される関数
        self.name = name
    def greet(self):
        print "my name is %s"%self.name

class SuperPerson(Person):
    def shout(self):
        print "%s is SUPER!!" % self.name

#main
bob = Person("Bob") # インスタンスの作成
tom = SuperPerson("Tom") # インスタンスの作成

print bob.name
bob.greet()
tom. shout()

[実行結果]

Bob
my name is Bob
my name is Tom
Tom is SUPER!!

ここではPersonのクラスを保持したままSuperPersonのクラスを作成しているので
Tomは greet() と shout() の両方を使える。
という理解でいいかな

実際に使っていこうと思うと難しいと思うけど、
慣れるしかないね。

参考文献

http://dotinstall.com/