私はオブジェクト指向プログラミングの新機能を持っているので、抽象概念の中には少しぼやけているものがあります。私は古いゲーム言語のための通訳を書いています。これにより、上記の言語からカスタム型を実装し、必要に応じてスタック上に配置して操作する必要がありました。リストにカスタムクラスオブジェクトを配置する
ここで、リストに文字列を配置できます。私はリストに数字を置くことができ、私はリストにシンボルを置くことさえできることを発見しました。しかし、私はちょうど変数にドロップすることができないときに、リストにカスタムオブジェクトのインスタンスを置く方法について少しばかげている(結局のところ、どれくらいの数のオブジェクトが存在するかわからないからコードが実行されている間に手作業でそれらを定義してください:)
私は、最も簡単なデータ型の1つ、つまりDBREFを作成しました。 DBREFには、データベース参照番号が含まれています。実装しなければならない型チェックメカニズムが実装されていて、それは問題を混乱させるので、整数、文字列、辞書などを使うことはできません。ここで
は私のコードとその背後にある私の推論です:
class dbref:
dbnumber=0
def __init__(self, number):
global number
dbnumber=number
def getdbref:
global number
return number
私はdbrefという名前のクラスを作成します。それは(今のところ)数値をとり、それを変数に格納するだけです。
examplelist=[ dbref(5) ]
dbrefオブジェクトがスタックにあることを私は願っています。それは可能ですか?
if typeof(examplelist[0]) is dbref:
print "It's a DBREF."
else:
print "Nope."
...または私はPythonのクラスがどのように動作するかを誤解しています:さらに、私はやることができるのだろうか?また、私のクラス定義はどんな方法でもうねっていますか?あなたが使用している場合
Pythonでは、オブジェクトのライフタイムが自動的に管理されるため、オブジェクトの格納先(すべてのオブジェクトがヒープに格納されます)を心配する必要はありません。 'typeof'に相当するのは' isinstance'です:if isinstance(examplelist [0]、dbref) 'しかし、あなたはむしろダックタイピングを利用しないでください。 'dbref')。 –
は質問には関係しませんが、ほとんどの場合、Pythonで 'グローバル'を避けたいと思っています。いつも質問してください。=) –