継承とオブジェクト指向
【開発環境】
OS:Win10(64ビット)
言語:Python3.8.5(64bit)
Python の統合開発環境:IDLE
IDLEの操作は別サイト参照のこと
【オブジェクト指向プログラミング】
オブジェクト指向とは
→クラスのように、メンバー変数とメソッド関数のまとまりをオブジェクトと言い、それらを使ったプログラミングをオブジェクト指向プログラミングと言う
【継 承】
継承とは
→元となるクラスの機能を受け継ぎながら、そこに別の機能を付け足して新たなクラスを作ったものを継承という。
・クラス継承の書式
class クラス名(基底クラス):
# クラス定義の本体
継承サンプル1
Python 3.8.9 (tags/v3.8.9:a743f81, Apr 2 2021, 11:10:41) [MSC v.1928 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>> import turtle
>>> class kame(turtle.Turtle):←継承
pass
>>> kame_test = kame()
>>> kame_test.forward(100)
>>>
【継承とメソッド】
上の継承サンプルでは亀に成って無いので、次のようなコードを追加する。
Python 3.8.9 (tags/v3.8.9:a743f81, Apr 2 2021, 11:10:41) [MSC v.1928 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>> import turtle
>>> class kame(turtle.Turtle):
pass
>>> kame_test = kame()
>>> kame_test.forward(100)
#追加
>>> kame_test.shape('turtle')
>>> kame_test.shapesize(2.2)
>>>
初期化メソッドを使う
「kame.py」で下記のコードを書き、保存し、モジュールファイルを作る
import turtel
class kame(turtle.Turtle):
def __init__(self):←これだけでは親クラスに初期化される
self.shape('turtle')
self.shapesize(2,2)
インタラクティブシェルで
>>> kame_test = kame.kame()
Traceback (most recent call last):
File "
kame_test = kame.kame()
File "D:\pg\Python38\kame.py", line 6, in __init__
self.shape('turtle')
File "D:\pg\Python38\lib\turtle.py", line 2776, in shape
if not name in self.screen.getshapes():
AttributeError: 'kame' object has no attribute 'screen'
>>>
>>>
改造する
import turtle
class kame(turtle.Turtle):
def __init__(self):
super().__init__()
self.shape('turtle')
self.shapesize(2,2)
インタラクティブシェルで実行する
Python 3.8.9 (tags/v3.8.9:a743f81, Apr 2 2021, 11:10:41) [MSC v.1928 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>> import kame
>>> kame_test = kame.kame()
>>> kame_test.forward(100)