AttributeError: объект 'str' не имеет атрибута '_port_handle'

Я хочу общаться на Python, используя pySerial с последовательным интерфейсом, но моя проблема в том, что я получаю эту ошибку: «AttributeError: объект 'str' не имеет атрибута '_port_handle'», когда я запускаю свою программу. Вот мой код:

import serial
serial.Serial.__init__("COM11", 115200, serial.EIGHTBITS, serial.PARITY_NONE, serial.STOPBITS_ONE)

Я надеюсь, что кто-то может мне помочь, потому что у всех в Интернете есть один и тот же код для инициализации последовательного порта.

«у всех в Интернете есть один и тот же код для инициализации последовательного порта» => ну, очевидно, нет.

bruno desthuilliers 02.05.2018 14:47
pythonhosted.org/pyserial/shortintro.html#opening-serial-por‌ ts - может, чтение документа будет хорошим началом?
bruno desthuilliers 02.05.2018 14:48

Я голосую за то, чтобы закрыть этот вопрос как не по теме, потому что ОП даже не удосужился прочитать документ.

bruno desthuilliers 02.05.2018 14:48
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
3
493
2

Ответы 2

Никогда не звоните в __init__() напрямую. Это метод конструктора, который неявно вызывается при создании объекта.

https://docs.python.org/3/reference/datamodel.html#object.__init__

Пытаться:

serial.Serial("COM11", 115200, serial.EIGHTBITS, serial.PARITY_NONE, serial.STOPBITS_ONE)

И если это не сработает, проверьте подпись этого класса Serial. Возможно, что первым параметром, который вы указываете, не должен быть str. Но это должно исправить.

Документ к этому __init__() есть: https://pythonhosted.org/pyserial/pyserial_api.html#serial.Serial.__init__

И такое ощущение, что все ваши параметры запутались. Попробуйте назвать их в конструкторе.

Причина ошибки в том, что метод __init__() всегда принимает self в качестве первого параметра. OP вызывается со строкой в ​​качестве первого параметра, отсюда ошибка и эффект запутанных параметров.

quamrana 02.05.2018 15:03

На самом деле, да, делать вызывает __init__() напрямую, чаще всего из метода инициализации производного класса.

quamrana 03.05.2018 10:45

Вам не нужен метод в этом (). Вы просто пишете serial.Serial (...). глянь сюда

Другие вопросы по теме