クラスとインヘリタンス

2019年5月22日の記事の再掲

今、PythonのProgrammingを思い出している。これは2019/5/22付の記事の再掲である。これらはオブジェクト・オリエンティッドのプログラムの必須機能である。内容は同記事を参照してください。

class Pet(object):
    def __init__(self, name, size):
        self.name = name
        self.size = size
    def petcall(self):
        print("Cannot burk")
    def run(self):
        print("running")
class Dog(Pet):
    def petcall(self):
        print("Bow wow")
    def run(self):
        print("running")
class Cat(Pet):
    def swim(self):
        print("cannot swimming")
    def petcall(self):
        print("Mew")
    def run(self):
        print("running")
class Turtle(Pet):
    def __init__(self, name, size, color):
        self.name = name
        self.size = size
        self.color = color
    def run(self):
        print("Just walking")

gardenPet = Pet("Mary", 160)
gardenPet.petcall()
gardenPet.run()
houseDog = Dog("John", 40)
houseDog.petcall()
houseDog.run()
nekoTheCat = Cat("Neko", 35)
nekoTheCat.swim()
nekoTheCat.petcall()
nekoTheCat.run()
tinyTheTurtle = Turtle("tiny", 10, "green")
print(tinyTheTurtle.color)
tinyTheTurtle.petcall()
tinyTheTurtle.run()

上のCode画面の右上隅の左から2番目のアイコン(コピー)をクリックし、ご自分の何らかのエディタにペイストすればPython Programが編集可能となります。

文字が小さく見ずらい時はWindows拡大鏡をお使いください。Windows・キー + 「+」(プラス・キー)(Windows・キーはキーボード左下、左から3~4番目のキー。抜けるにはWindows・キー + 「ESCキー」を押します)
Enlighterのコードは窓の右上アイコンの「<>」を押すと明るい表示になります。

↑人気ブログランキングに参加しています。ポチっと1票を!

クラスとインヘリタンスその2

今日はPetというスーパークラスを定義しDogやCatそしてTurtleのサブクラスを定義し、継承やオーバーライドのためのPythonのプログラムを作りました。

クラスとインヘリタンスその2

昨日アップした記事は「クラスとインヘリタンス」のCode部分の説明があまりなされていませんでした。

そこで今日はPetというスーパークラスを定義しDogやCatそしてTurtleのサブクラスを定義し、継承やオーバーライドのためのPythonのプログラムを作りました。

参考になさってください。

↑人気ブログランキングに参加しています。よろしければ1票を!

クラスとインヘリタンス

トリというクラス(オブジェクト)を設け、鳴き声と飛行というメソッドをつくります。

クラスとインヘリタンス

Codeの説明

① スーパークラスBirdを作る(パラメーターはobject-スーパークラス)
② __init__関数(第一パラメーターはself,第2第3パラメーターはname,wingspan)
③ 初期設定の左辺はself.name、self.wingspan、右辺は対応する変数(第1・2param)
④ birdcall関数(メソッド)のparamはself、出力はchirpを表示
⑤ fly関数(メソッド)のparamはself、出力はflapを表示
⑥ サブ・クラスPenguinのパラメーターはBird(サブクラス)
⑦ 関数(メソッド)swim(self)、関数(メソッド)birdcall(self)、関数(メソッド)fly(self)では飛べないとオーバーライド
⑧ サブ・クラスParrotのパラメーターはBird(サブクラス)
⑨ __init__関数(第一パラメーターはself,第2第3第4パラメーターはname,wingspan,color)パラメーターが一つ増えたことで初期設定の__init__でBirdのcolor以外を継承する(インヘリタンス)

トリのクラスを定義してインヘリテンスを知ろう。
またトリというクラス(オブジェクト)を設け、鳴き声と飛行というメソッドをつくります。
このトリにはペンギンとパロットというサブクラス(オリジナルのオブジェクトとは少し違うメソッドや属性をもっています=インスタンスがオリジナル[スーパークラス]とは少し異なる)をつくります。この少し違ったものを作るのにインヘリテンスという概念が重要になります。
ペンギンはトリのクラスに属しますが、違う鳴き声をし、泳ぐという新しいメソッドをもち、飛行メソッドは「飛べない」と出力します(オーバーライドにより書き換えています)。
パロットは色という属性を持ちますが、メソッドはオリジナルのバードと同じ(これを継承[インヘリテンス]とよぶ)のように定義します。

Parrot:オウム、chirp:小鳥のさえずり(ちゅんちゅん)
flap:小鳥がパタパタ、quack:ガアガア

↑人気ブログランキングに参加しています。よろしければ1票を!

オブジェクト・データ・メソッド

Pythonでは、オブジェクトに続けてドットを打ち、その後にメソッドを続ける。Pythonで扱うデータはすべてオブジェクトである。

オブジェクト・データ・メソッド

2019/5/21

—————————————————————————————————
name = “Pablo Diego Jose Francisco de Paula Juan Nepomuceno Crispin Crispiniano de la Santisima Trinidad Ruiz Blasco Picasso y Lopez”
print(name)
name.index(“Picasso”)
name.count(‘o’)
“ABCDE”.lower()
—————————————————————————————————

① 「name」という名前の入れ物に画家ピカソの本名を入れる
② 入れ物にアルファベットが正しく入っているか表示する
③ nameは文字列を保存しているだけではなく特別な機能を持っている
④ name自体が関数のような命令を持っている
⑤ nameがもつピカソの名前の何文字目に「Picasso」が含まれているか
⑥ nameは単なるデータではない
⑦ nameという変数はその中のデータに対して処理を行う関数のようなものを持っている
⑧ index()は関数に似ているが、nameというデータを引数のように扱って処理を行う、という点では関数と違っている
⑨ Pythonで扱う文字列のようなデータは、ただのデータではなく、データと合わせて命令も持っている
⑩ データと命令をセットで持つもののことをオブジェクトと呼ぶ
⑪ オブジェクトがもっている命令のことをメソッドと呼ぶ
⑫ nameという入れ物は、データを持っていてメソッドも持っているので、オブジェクトの例
⑬ Pythonでは、オブジェクトに続けてドットを打ち、その後にメソッドを続ける
⑭ nameという入れ物のことを文字オブジェクトと呼ぶ
⑮ “ABCDE”.lower()→文字列定義自体もオブジェクトである
⑯ Pythonで扱うデータはすべてオブジェクトである

以上

↑人気ブログランキングに参加しています。よろしければ1票を!