---
title: pf-8. メソッド，クラス，コンストラクタ，継承
tags:  #python #google colaboratory #クラス #メソッド #コンストラクタ #継承 #スーパークラス #サブクラス #class #def #__init__ #self #vars #super #金子邦彦研究室  
author: [kunihikokaneko](https://www.docswell.com/user/6674398749)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/GJ554PP2J4.jpg?width=480
description: トピックス：Python, Google Colaboratory, クラス, メソッド, コンストラクタ, 継承, スーパークラス, サブクラス, class, def, __init__, self, vars, super  Python 入門（Google Colaboratory を使用）（全８回） https://www.kkaneko.jp/pro/pf/index.html  金子邦彦研究室ホームページ https://www.kkaneko.jp/index.html
published: January 29, 23
canonical: https://www.docswell.com/s/6674398749/KL797K-2023-01-29-133400
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/GJ554PP2J4.jpg)

pf-8. メソッド，クラス，コン
ストラクタ，継承
（Python 入門，Google Colaboratory を使用）
（全８回）
URL: https://www.kkaneko.jp/pro/pf/index.html
金子邦彦
1


# Page. 2

![Page Image](https://bcdn.docswell.com/page/LE3NG331E5.jpg)

オブジェクトとメソッド
hero.moveDown()
hero
オブジェクト
moveDown()
メソッド
間を「.」で区切っている
• オブジェクト
コンピュータでの操作や処理の対象となるもの
※ 名前の付いたオブジェクトのことを変数，関数な
どと呼んだりもする
• メソッド
オブジェクトに属する操作や処理
2


# Page. 3

![Page Image](https://bcdn.docswell.com/page/8EDW144K7G.jpg)

クラス
クラスは，同じ種類のオブジェクトの集まりと考え
ることができる
人間
学生
学生でもあり人間でもある
人間だが、学生ではない
3


# Page. 4

![Page Image](https://bcdn.docswell.com/page/V7P9QMM3J8.jpg)

Python のクラスとオブジェクト
• 次の２つのオブジェクトを生成する Python プロ
グラム
x 5
170.51
&#039;apple&#039;
y 3
40.97
‘orange&#039;
qty weight
name
x = C(5, 170.51, &#039;apple&#039;)
y = C(3, 40.97, &#039;orange&#039;)
Python プログラム
• このとき，次のクラスを使うことにする
クラス名 C
属性 qty,
weight,
name
class C(object):
def __init__(self, qty, weight, name):
self.qty = qty
self.weight = weight
self.name = name
Python プログラム
4


# Page. 5

![Page Image](https://bcdn.docswell.com/page/2JVM599NJQ.jpg)

コンストラクタ
コンストラクタは，オブジェクトの生成を行うメ
ソッドである．
class C(object):
コンストラクタ
def __init__(self, qty, weight, name):
self.qty = qty
self.weight = weight
self.name = name
5


# Page. 6

![Page Image](https://bcdn.docswell.com/page/5EGG6ZZ5EL.jpg)

属性アクセスとメソッドアクセス
• 「.」＋メソッド名によるメソッドアクセス
• 「.」＋属性名による属性アクセス
6


# Page. 7

![Page Image](https://bcdn.docswell.com/page/4JQX4LLLEP.jpg)

メソッド定義内
• メソッド定義内では，self ＋「.」で属性やメソッ
ドにアクセス
class C():
def __init__(self, qty, weight, name):
self.qty = qty
self.weight = weight
self.name = name
def total(self):
return self.qty * self.weight
7


# Page. 8

![Page Image](https://bcdn.docswell.com/page/K746QDD5E1.jpg)

属性の一括取得
vars は，オブジェクトの属性名と値を一度に得る
8


# Page. 9

![Page Image](https://bcdn.docswell.com/page/LJ1VPZZ2EG.jpg)

スーパークラス，サブクラス
• スーパークラス「人間」
• サブクラス「学生」
「学生」のオブジェクトは，すべて「人間」である
人間
学生
学生でもあり人間でもある
人間だが、学生ではない
9


# Page. 10

![Page Image](https://bcdn.docswell.com/page/GJWL2992E2.jpg)

継承
• 継承は，スーパークラスの属性とメソッドをサブ
クラスが受け継ぐこと
• 但し，コンストラクタは受け継がない
10


# Page. 11

![Page Image](https://bcdn.docswell.com/page/4EZMD994J3.jpg)

継承
クラス名 C
属性 qty, weight, name
class C(object):
def __init__(self, qty, weight,
name):
self.qty = qty
self.weight = weight
self.name = name
def total(self):
return self.qty * self.weight
class E(C):
def __init__(self, qty, weight, name, price):
super(E, self).__init__(qty, weight,
name)
self.price = price
def payment(self):
return self.qty * self.price
クラス名 E
属性 qty, weight, name, price
クラス E は，スーパークラスで
あるクラス C の属性を継承する．
11


# Page. 12

![Page Image](https://bcdn.docswell.com/page/Y76N1KKG7V.jpg)

まとめ
• class
クラス定義
• __init__
コンストラクタ
• self
セス
クラス定義内での自オブジェクトへアク
• vars
オブジェクトの属性名と値
• super
親クラス（スーパークラス）
12


# Page. 13

![Page Image](https://bcdn.docswell.com/page/G7554PPX74.jpg)

演習
資料：14 ～ 17
【トピックス】
• クラス定義
• コンストラクタ
13


# Page. 14

![Page Image](https://bcdn.docswell.com/page/9J2NV66QER.jpg)

① Google Colaboratory のWebページを開く
https://colab.research.google.com
14


# Page. 15

![Page Image](https://bcdn.docswell.com/page/DEYP399YEM.jpg)

② 「ファイル」で，「ノートブックを新規作成」を選ぶ
③ Google アカウントでのログインが求められたときはログ
インする
15


# Page. 16

![Page Image](https://bcdn.docswell.com/page/VJN5VLLR78.jpg)

④ コードセルを新規作成し，Python プログラムを入れる．結果を確認．
class C(object):
def __init__(self, qty, weight, name):
self.qty = qty
self.weight = weight
self.name = name
x = C(5, 170.51, &#039;apple&#039;)
print(vars(x))
y = C(3, 40.97, &#039;orange&#039;)
print(vars(y))
16


# Page. 17

![Page Image](https://bcdn.docswell.com/page/YE9Y644ZJ3.jpg)

⑤ コードセルを新規作成し，Python プログラムを入れる．結果を確認．
class C(object):
def __init__(self, qty, weight, name):
self.qty = qty
self.weight = weight
self.name = name
def total(self):
return self.qty * self.weight
class E(C):
def __init__(self, qty, weight, name, price):
super().__init__(qty, weight, name)
self.price = price
def payment(self):
return self.qty * self.price
x2 = E(2, 875.34, &#039;melon&#039;, 500)
vars(x2)
print(x2.total())
print(x2.payment())
type(x2)
17


# Page. 18

![Page Image](https://bcdn.docswell.com/page/GE86ZQVY7D.jpg)

Python 関連ページ
• Python まとめページ
https://www.kkaneko.jp/tools/man/python.html
• Python プログラミングの基本
Python Tutor, VisuAlgo, Code Combat を使用
https://www.kkaneko.jp/pro/po/index.html
• Python プログラム例
https://www.kkaneko.jp/pro/python/index.html
• 人工知能の実行（Google Colaboratory を使用）
https://www.kkaneko.jp/ai/ni/index.html
• 人工知能の実行（Python を使用）（Windows 上）
https://www.kkaneko.jp/ai/deepim/index.html
18


