Dec-Python 3
概要
Deque(Double-end queue)は、前後の2つの場所で要素を挿入および削除できるキューです.スタックとキューの組み合わせと考えられます.入力のみを一端に制限するスクロール(Scroll)や出力のみを一端に制限するShellもあるが,本稿では基本構造のDarkのみを実施する.
また,以前に作成したスタックとキュー-Phython 3の
抽象データ型
こうぞうDeque,両端キュー
-ARR:キューに格納されているデータの配列. 機能IsEmpty():dakeが空の場合は Size():Deckに格納されている要素の数を返します. Front():Deckの一番前にある要素の値を返します. Rear():Deckの末尾にある要素の値を返します. Insert Front(N):dacの前に新しい要素 Insert Rear(N):Darkの末尾に新しい要素 Delete Front():Deckの先頭にある要素を削除します. Delete Rear():Darkの末尾にある要素を削除します. インプリメンテーション
Python 3から引き継ぐ
Python 3から引き継ぐのは簡単です.子クラスを宣言する場合は、親クラスをパラメータとして入れるだけです.例を確認してください.親クラスのすべてのメソッドおよび変数は、追加の符号化を必要とせずに使用できます.すなわち、 メソッドオーバーライドもサポートされています.メソッドオーバーライドは、子クラスで親クラスを再定義するメソッドを意味します.この問題については、以下でさらに詳しく説明します. どんな方法を使うべきですか.
メソッドオーバーライドと例外処理
Deque(Double-end queue)は、前後の2つの場所で要素を挿入および削除できるキューです.スタックとキューの組み合わせと考えられます.入力のみを一端に制限するスクロール(Scroll)や出力のみを一端に制限するShellもあるが,本稿では基本構造のDarkのみを実施する.
また,以前に作成したスタックとキュー-Phython 3の
Queue
クラスを継承し,Darkの実装を試みる.抽象データ型
こうぞう
-ARR:キューに格納されているデータの配列.
True
が返されます.それ以外の場合は、False
を返します.N
を挿入します.N
を挿入します.# Deque (Double-ended queue)
class Deque(Queue):
# Previous Push() and Pop() can't be used on deque.
def Push(self, N):
raise AttributeError("'Deque' object has no attribute 'Push'")
def Pop(self):
raise AttributeError("'Deque' object has no attribute 'Push'")
def Insert_Front(self, N):
self.Arr.insert(0, N)
def Insert_Rear(self, N):
self.Arr.append(N)
def Delete_Front(self):
return self.Arr.pop(0) if self.IsEmpty() == 0 else None
def Delete_Rear(self):
return self.Arr.pop() if self.IsEmpty() == 0 else None
# Front(), Back(), IsEmpty(), Size() are inherited and will be used continuously.
実施過程で考慮した事項Python 3から引き継ぐ
Python 3から引き継ぐのは簡単です.子クラスを宣言する場合は、親クラスをパラメータとして入れるだけです.例を確認してください.
class parant:
def func_a:
# func_a
def func_b:
# func_b
class child(parant):
# child
継承されたサブクラスには、次の特性があります.child
クラスにfunc_a
が定義されていなくても、child.func_a()
は正常に動作する.Queue
には、IsEmpty()
、Size()
、Push(N)
、Pop()
、Front()
およびRear()
の6つの方法があります.Deque
はQueue
を継承するので、Queue
で定義された方法を使用することができる.ただし、Push()
およびPop()
を除く.Deque
前後の挿入と削除が同時に発生します.前に削除され、後に挿入されたQueue
のPop()
およびPush(N)
は、Deque
には適用されません.したがって、Deque
が使用できないように、この2つの方法を方法オーバーライド処理する必要がある.すなわち、Deque
のPop()
とPush()
を再定義する必要があります.メソッドオーバーライドと例外処理
Deque
は、Pop()
およびPush()
を継承しているため、削除することはできません.したがって、適切な代替案として、この2つの関数を実行するときにプログラムを保留に処理しようとします.raise
コマンドに異常が発生しました.使用方法は次のとおりです.raise (예외 종류)[오류 메시지]
これをPop()
およびPush()
に適用する.発生した例外タイプはAttributeError
である可能性があります.AttributeError
「属性」(Attribute)名が無効または存在しない場合に発生します.Deque
では、Pop()
およびPush()
は実際には存在せず、AttributeError
の発生条件と一致する.class Deque(Queue):
def Pop(self):
raise AttributeError("'Deque' object has no attribute 'Pop'")
def Push(self, N):
raise AttributeError("'Deque' object has no attribute 'Push'")
上記の符号化が完了すると、Deque
クラス実行Pop()
またはPush()
が呼び出されると、以下の異常が発生します.Traceback (most recent call last):
File "Queue.py", line 63, in <module>
deque.Pop()
File "Queue.py", line 31, in Pop
raise AttributeError("'Deque' object has no attribute 'Push'")
AttributeError: 'Deque' object has no attribute 'Push'
Reference
この問題について(Dec-Python 3), 我々は、より多くの情報をここで見つけました https://velog.io/@i_meant_to_be/Deque-Pyテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol