私はPythonで新しいです。
以下は、range()
に似ているが、範囲境界を含む点を除いて、mathodのクラスです。クラス内でインデックス作成メソッドを定義する方法(__getitem__しようとしました)
特定のインデックスが呼び出されたときにそのインデックスを持つ要素が返されるように、クラス内にインデックスメソッドを作成しようとしています。私は__getitem__
がインデックス作成を実行できることを読んでいますが、正しく実装することはできませんでした。より効率的な方法がある場合は、必ずしも__getitem__
を使用しないでください。
以下のコードをご覧ください。これはクラスの作成方法を学習するための簡単なコードです。
def __getitem__(self,index)
で始まるメソッドは機能しないメソッドで、これは最後にインデックスを呼び出すことに相当しますo[4]
これは達成したいものです。
class inclusive_range:
def __init__(self, *args):
numargs = len(args)
if numargs < 1: raise TypeError('requires at least one argument')
elif numargs == 1:
self.stop = args[0]
self.start = 0
self.step = 1
elif numargs == 2:
(self.start,self.stop) = args
self.step = 1
elif numargs == 3:
(self.start,self.stop,self.step) = args
else:
raise TypeError('three arguments required at most, got {}'.format(numargs))
def __iter__(self): # this makes the function (the method) and iterable function
i = self.start
while i <= self.stop:
yield i
i += self.step
def __getitem__(self,index):
return self[index]
print(self[index])
def main():
o = inclusive_range(5, 10, 1)
for i in o: print(i, end=' ')
o[2]
if __name__ == "__main__": main()
あなたは
[なぜ1000000000000000の範囲(1000000000000001)がPython 3ですばらしいのですか?](// stackoverflow.com/a/30081318) –
'return self [index]'?それはかなり隠れた再帰です... – Uriel