python素人です。
プログラム素人です。
以下、自分メモなので、分かりにくくてすみません。
pythonで単方向リストを考えてみた。
単方向リストを作るには、「クラス」を作るのがいいらしい。
アメリカの大学で奮闘中様の
「連結リスト(Linked List)を大学生が解説してみた by python」のコードが分かりやすかった。
(感謝)
ここにはコードは書きませんが、
引っかかったのが
class LinkedList:
の誤植(入力ミス)やインデントくらい。
プログラムのクラスに
def printList(self):
temp = self.head
while temp:
print(temp.payload)
temp = temp.next
をつけ、
最後に、
links.printList()
と付けたら、格納された数字が確認できた。
上記これを基礎に少し勉強するかな。
********************
で、今後することの前に、事前知識。(素人です)
pythonについて
CやJavaはコンパイルを必要とする言語です。
一方、Pythonはコンパイルが不要なので書いたコードを1行ずつ実行します。
つまり、書いたコードが実行できるか、エラーかどうかがすぐに分かるということです。
→インタプリタ言語
pythonについて
C++とJava・・・オブジェクト指向。
pythonはオブジェクト指向も可能。
****************クラスの書き方1
classクラスの定義:
その中に関数を定義(selfと書く):
+++++++++++++++++++++++++++++++
コード(実際の命令)
変数=クラス名
変数.関数名()
↑変数に代入して、実際のオブジェクトを作る(インスタンス化)。
↑変数.関数名()でクラス内の関数が使える(メソッド)
===============(クラスの初期化)
classクラスの定義:
def __ init__(self):
○○
↑初期化メソッドは、クラスがインスタンス化されたら、最初に実行される。
===============(クラスの初期化での設定例)
classクラスの定義:
def __ init__(self, name):
self.name = name
print(self.name)
↑nameは変数。(インスタンス変数)
+++++++++++++++++++++++++++++++++++++++(上記を実行)
コード(実際の命令)
変数=クラス名("taro")
↑クラスの初期化で"taro"を引数で渡して、クラスをインスタンス化。
======================================
実行結果
→taroを表示
(参考)
この引数は、他のメソッドでも使用可能。
クラスの初期化定義の
self.name = name
nameを引数にしなくても、固定の値を代入でもいい。
******************クラスの書き方2
class クラス名():
def __ init__(self):
↑この文言はコンストラクタというらしい。
def メソッド(self):
↑このようなメソッドが続く。
def __ del__(self):
↑クラスの最後にデストラクタが出る。
init__(self):とdef __ del__(self):は、
実際の命令
変数=クラス名
変数.関数名()
の変数.関数名()がなくても、
変数=クラス名だけで動く。
デストラクタは、一番最後に動く。
メソッドはselfを書く。