0

私はpythonが初めてで、これについて多くの議論があったことは知っていますが、まだ質問があります。クラスから同じクラス関数に変数にアクセスしようとしていますが、エラーが発生します

「AttributeError: 'int' オブジェクトに属性 'isOpen' がありません」

コードは次のとおりです。

class serialCommunication():
    ser = 0               #class global variable
    def ser_port():
        .....
    def ser_Burdrate():
        BurdRate = ( "4800",
                     "9600",
                     "19200",
                     "38400",
                     "57600",
                     "115200"
                     )
        BR = int(input("Enter the Burd Rate\n0\t--\t4800\n1\t--\t9600\n2\t--\t19200\n3\t--\t38400\n4\t--\t57600\n5\t--\t115200\n\n"))
        return Portno , int(BurdRate[BR]), timeout
    def ser_open():
        port = serialCommunication.ser_Burdrate()
        serialCommunication.ser = serial.Serial(port[0], port[1], timeout=port[2])
        port = serialCommunication.ser.getPort()
        print (serialCommunication.ser , '\r\n')
        .....
    def ser_Write():

        if (serialCommunication.ser.isOpen()):
            print ('open: ', serialCommunication.ser.getPort())
        elif (serialCommunication.ser.closed()):
            serialCommunication.ser_open()

あわせてアドバイスお願いします

前もって感謝します

アドバイスありがとう 変更しました

ser = serial.Serial()

そして、それは次のようにエラーを経験しています

「TypeError: 'bool' オブジェクトは呼び出し可能ではありません」

if ステートメントでは、bool オブジェクトを正しく実行できます..?

4

1 に答える 1

0

エラーがオブジェクトにこのメソッドがないことを示唆しているため、int 型 (クラス serialCommunication で宣言された ser = 0) でメソッド .isOpen() を呼び出そうとしています。

クラスの残りの部分は見えませんが、クラスのメソッドを直接参照しようとしてはいけませんか? また、インスタンスがない場合、呼び出すメソッドは、@classmethod デコレーターを前に付けたクラス メソッドである必要があります。

于 2013-11-12T09:15:47.717 に答える