[解決済み] 'instancemethod' オブジェクトは、クラス変数で '__getitem__' という属性を持たない
2022-02-20 13:05:39
質問
Raspberry Piを使ってステッピングモータを制御するpythonクラスを作ろうとしています。ほとんど動作するのですが、「'instancemethod' object has no attribute」というエラーメッセージが表示されます。
'__getitem__'
をクラス変数として定義すると、必ずエラーが発生します。エラーメッセージには、このコードの一部が原因として挙げられていますが、私はそれが間違っていることを見ることができません if seq[self.StepCounter][pin]!=0:. インスタンス変数やグローバル変数として定義するとうまくいくのですが。
これは私のコードです。
インポート RPi.GPIO as GPIO
インポート時間
デバッグ = True
class stepper:
clockwise = []
clockwise = range(0,4)
clockwise[0] = [1,0,0,0]
clockwise[1] = [0,1,0,0]
clockwise[2] = [0,0,1,0]
clockwise[3] = [0,0,0,1]
def __init__(self,pin1,pin2,pin3,pin4):
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
self.pin1 = pin1
self.pin2 = pin2
self.pin3 = pin3
self.pin4 = pin4
self.StepCounter = 0
self.pinarray = [pin1,pin2,pin3,pin4]
for pin in self.pinarray:
if debug == True:
print "Setup pin " + str(pin)
GPIO.setup(pin,GPIO.OUT)
GPIO.output(pin, False)
self.stepNum = 512.0
self.coilNum = 4.0
def setup(self,stepNum,coilNum):
self.stepNum = float(stepNum)
self.coilNum = float(coilNum)
self.partNum = self.coilNum * self.stepNum
def clockwise(self,speed):
seq = stepper.clockwise
self.WaitTime = (1.0 / (self.stepNum * self.coilNum)) * speed
for pin in range(0, 4):
xpin = self.pinarray[pin]
if seq[self.StepCounter][pin]!=0:
GPIO.output(xpin, True)
else:
GPIO.output(xpin, False)
self.StepCounter += 1
if (self.StepCounter==len(seq)):
self.StepCounter = 0
if (self.StepCounter<0):
self.StepCounter = len(seq)
time.sleep(self.WaitTime)
print "Adding Motor Instance"
motor = stepper(24,25,8,7)
print "Spinning Motor"
while "True":
motor.clockwise(5)
どなたか、どこが悪いのか、その理由を教えていただけませんか。ありがとうございます。
解決方法を教えてください。
完全なトレースバックが掲載されていませんが、推測は可能です。
def clockwise(self,speed):
seq = stepper.clockwise
self.WaitTime = (1.0 / (self.stepNum * self.coilNum)) * speed
for pin in range(0, 4):
xpin = self.pinarray[pin]
if seq[self.StepCounter][pin]!=0:
を設定します。
seq
というメソッドと同じです。
stepper.clockwise
を最初の行に追加しました。 そして数行後に、その中にインデックスを作ろうとします。
seq[self.StepCounter]
. を取得するというのはどういうことかというと
self.StepCounter
-メソッドの第 1 要素?
何もない、なぜなら。
'instancemethod' object has no attribute '__getitem__'
を使うべきではありません。
clockwise
最後に実行された定義のみが保持されるため、リスト名とメソッド名の両方として
seq = stepper.clockwise
リストではなく、メソッドです。
関連
-
ピロウズ画像色処理の具体的な活用方法
-
Pythonによるjieba分割ライブラリ
-
pyCaret効率化乗算器 オープンソース ローコード Python機械学習ツール
-
[解決済み] _tkinter.TclError: 表示名がなく、$DISPLAY環境変数もない。
-
[解決済み】Python: OverflowError: 数学の範囲エラー
-
[解決済み] Pythonで静的なクラス変数は可能ですか?
-
[解決済み] Pythonでオブジェクトが属性を持つかどうかを知る方法
-
[解決済み] Pythonのオブジェクトが持っているメソッドを検索する
-
[解決済み] エラーです。" 'dict' オブジェクトには 'iteritems' という属性がありません "
-
[解決済み] AttributeError: 'NoneType' オブジェクトには 'something' という属性がありません」と表示されるのはなぜですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
PythonによるLeNetネットワークモデルの学習と予測
-
python call matlab メソッドの詳細
-
パッケージングツールPyinstallerの使用と落とし穴の回避
-
pyCaret効率化乗算器 オープンソース ローコード Python機械学習ツール
-
風力制御におけるKS原理を深く理解するためのpythonアルゴリズム
-
Python 入出力と高次代入の基礎知識
-
[解決済み】RuntimeWarning: 割り算で無効な値が発生しました。
-
[解決済み】なぜ「LinAlgError: Grangercausalitytestsから「Singular matrix」と表示されるのはなぜですか?
-
[解決済み】TypeError: 系列を <class 'float'> に変換することができません。
-
[解決済み] TypeError: 'DataFrame' オブジェクトは呼び出し可能ではない