masakunの日記: 第6章 オブジェクト(すっきりPython 243~278頁) 2
〇すべての値はオブジェクト
「データ」と「データに関する処理を行う関数」をひとかたまりにしたものをオブジェクトという。Pythonにおけるあらゆる値はオブジェクトである。
オブジェクト.メソッド名(引数…)
print('{}さん、こんにちわ'.format('山田'))
オブジェクトが従える関数は型で決まる(今まで型が違うからその関数は使えないって散々怒られたからそこは分かる)。
それぞれの型がどのようなメソッドを持つかは公式サイトにドキュメントがある。
strオブジェクトをメソッドに活用した血液型占い
userinfo = input('名前と血液型をカンマで区切って1行で入力>>')
[name, blood]=userinfo.split(',')
blood = blood.upper().strip()
print(f'{name}さんは{blood}型なので大吉です')
実行結果
名前と血液型をカンマで区切って1行で入力>> 名無し,大
名無しさんは大型なので大吉です
( ゚д゚)ハッ!これのどこが占いなの?編集者呼び出して小一時間問い詰めたい
関数さえオブジェクト
「関数定義とは、関数名と同じ名前の変数を準備し、そこに関数オブジェクトを代入する行為なのです。また関数名()による関数の呼び出しは、変数内のオブジェクトを取り出し、処理を起動して、戻り値に化ける動作です」
def add(x, y): #関数オブジェクトを定義し、変数 add に代入
return x + y
type(add) #変数 add の型を調べる
newadd = add #変数に代入されたオブジェクトは別の変数にコピーできる
print(newadd(4,5)) #コピーされた関数オブジェクトを起動
実行結果
9
型によってメソッドは決まっているが、これは設計図(クラス)に基づいている。
変数名=クラス名()
int_value1 = 0
int_value2 = int()
int_value3 = int(9)
list_value1 = []
list_value2 = list()
list_value3 = list(('松田','麻木'))
このクラスも自分で定義することができるが、すべての人に必要となる知識ではないため省略します。
6-7章はざっと紹介しただけで授業は終わって(7章にいたってはモジュールの呼び方と例外処理のフォーマットだけ)、いきなり練習問題の数当てゲームを作らされ、そのあとCUIの双六ゲームの課題が出たのだが、双六にいたってはまったくやる気がでない。ゲームを作って喜ぶのガキだけじゃなくて?回想録としてどういう問題だったのか、ここで紹介しておきたいのだが課題のプリントを忘れてきたようだwww
やるきがでなくてもやらなきゃが仕事 (スコア:0)
社会復帰後のリハビリだと思ってやるといい。
でもすごろくゲームってフルオートでもいいからやる気おきんな。
自分で課題考えたら? (スコア:0)
それのみでモノとして完結してて、インタラクティブで、
何するモノかわかりやすく、必要な言語機能を使用していれば良い。
子供に学ばせる必要もある。課題としちゃ便利なんだろ、こういうのは。
本当に必要な物なら大概は既存品があるし車輪の再生産でもっとやる気でねぇだろ?どうせ。
あと実用に寄せると本題じゃない部分の作り込みも問題になってしまう。
明らかに練習用の課題であればこそ雑な物でも許される。
ゲームとしちゃ子供にとっても子供騙しだろこの手の課題って。