Pythonのクラスを学習したんで、その備忘録をつけていく
クラスの書き順
-
class クラス名:
でクラスを定義する -
def __init__(self,引数)
で初期設定?設計書?を定義する -
self.属性名
で属性(プロパティ)を与えていく
クラスの書き方例
class Persson00:
def __init__(self,name,age):
self.name = name
self.age = age
これで実行すると、クラスが定義される。
まだ定義しただけなので、特に何も起きない。
なので、定義したクラスを使える処理をしていく。
インスタンスの作り方
-
インスタンス名 = クラス名(引数)
でインスタンスを定義。 -
インスタンス名.属性名
でインスタンスを実行できる。
インスタンスの実行例-その1-
#上で書いたクラスを使ってます
mittsu00 = Persson00("みっつ",29) #インスタンスを定義
mittsu00.name #インスタンスを実行
#実行結果:みっつ
mittsu00.age #インスタンスを実行
#実行結果:29
Persson00
で定義した属性を使って mittsu00
っていうインスタンスを作り上げた、ってことか。
そしてそのインスタンスを使って、アレコレやっていく、みたいな感じなんですかね。
インスタンスの実行例-その2-
yottus00 = Persson00("よっつ",35) #インスタンスを定義
yottsu00.name #インスタンスを実行
#実行結果:よっつ
yottsu00.age #インスタンスを実行
#実行結果:35
同じ Persson00
クラスを使って、別のインスタンスを作ることもできる。
なるほど、、、。
そうやって頻繁に使うであろう属性ってのを、予めクラスの中で定義しておいて、それを使い回す、
みたいなイメージかな。
クラスの中にメソッドを定義する
-
class クラス名:
でクラスを定義する。 -
def __init__(self,引数)
で初期設定を定義する -
def メソッド名(self,引数名)
でメソッドを定義する - 3で作ったメソッドの中身を書いていく
メソッドの書き方例
class Persson01:
def __init__(self,name,age):#この辺はさっきと同じ
self.name = name
self.age = age
def main(self,name):#ここからがメソッドの定義
print ("私の名前は、"+name+"と申します")
ここまでで、クラスとメソッドの定義完了。
後は上記と同様に、インスタンスを作り、メソッドを実行していく。
メソッドの実行例-その1-
mittsu01 = Persson01("みっつ",29)
mittsu01.main("みっつ")
#実行結果:私の名前は、みっつと申します
Persson01
を元にした mittsu01
というインスタンスを作り、クラス内で定義した main
メソッドを実行する。
そして引数を渡して実行することで、 main
メソッドの処理である、 print
が走る、
ってわけか。
selfを使ったメソッドの定義
class Persson01:
def __init__(self,name,age):
self.name = name
self.age = age
def main(self,name):
print ("私の名前は、"+name+"と申します")
print ("私の名前は、"+self.name+"と申します")#ここでselfを使ってる
mittsu01 = Persson01("みっつ(これはインスタンス名)",29)
mittsu01.main("みっつ(こっちは引数名)")#インスタンスを実行
#実行結果:私の名前は、みっつ(こっちは引数名)と申します
#実行結果:私の名前は、みっつ(これはインスタンス名)と申します
メソッドの処理の中に、 self.○○
をつけることで、インスタンスで定義した値を設定することが出来る。
なるほど、これは便利かも。
所感
Pythonってか、オブジェクト指向って呼ばれる言語は、クラスを使えてなんぼ、みたいなところがありますね...。
なので、この辺は頑張って理解していきます。
PySideでGUIを作る場合、
- ウィンドのタイトル名とか、
- 実行ボタンを予め持たせておく、とか
まぁそんな感じで、ひな形みたいなのを作っておくと、便利なのかなぁ、、、。
なんて思いながらやってました。
この後はクラスの継承とかも覚えて、より実践的な書き方をマスターしていきたいですね。
手書きのメモ
やっぱりプログラムとは言え、なんやかんや、アナログでメモった方がいいな。
頭の中でソースが書けてないと、タイピングも出来ないしね。
まぁ、実行出来ないんでミスってても気づかないんですけど(笑)