十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
我在书写python脚本的时候,遇到一个莫名其妙的错误,AttributeError, XX instance has no attribute XX. 这个错误如果从字面意思来理解是指缺少某一个属性,但仅仅从这个方面查bug可能会被误导。我通过仔细检查,发现我的类构造函数出了问题,本来是__init__()函数,但有几个类的构造函数成了__init_,少了一个'_'符号,这才是错误的根源。所以在书写构造函数的时候一定要注意格式。另外书写python程序,还要注意缩进,否则很容易发生错误。
创新互联专注于企业营销型网站建设、网站重做改版、城子河网站定制设计、自适应品牌网站建设、H5开发、商城开发、集团公司官网建设、外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为城子河等各大城市提供网站开发制作服务。
python运行失败,可能包含多方面原因,建议从以下方面检测:
1、Python开发环境没有正确配置
2、Python代码语法错误,如大小写、缩进等
3、脚本文件的路径存在问题
4、网络问题,如断网,网线插口松动等
当然,运行失败的原因远不止这些,很多问题还需要在实际的项目中去解决,更多学习内容,请点击Python学习网!
你的Python程序中A类的构造函数def _init_(self,a,b):中的_init_错了,不是一个下划线,而是两个下划线__init__ 应该改成这样def __init__(self,a,b): 就对了.
完整的Python程序如下
运行结果
9
类是对象的模板,是抽象的。
构造函数 init 是Python魔术方法之一,如图魔术方法
我们通过类模版去创建类的实例对象,然后再调用类定义的功能。
那实例对象的属性是通过什么来初始化的?
这时候Python引入来构造函数 init
构造函数,会在创建实例对象之后Python会自动执行此方法,把初始化的属性特点放到实例对象里。
通过前面的学习,我们知道一个python对象包含三个部分:id(识别码),type(对象类型),value(对象的值)
那么我们进一步深入对象包含的三部分:
我们通过类创建实例对象后,需要定义构造函数 init ()方法。
构造方法用于执行实例对象的初始化工作,即对象创建之后,初始化当前对象的相关的属性,无返回值
构造函数重点 :
我们通过栗子来学习构造函数的过程
构造函数初始化实例对象过程如下:
1.Animal类会通过默认的 new ()方法为实例对象在堆内存中为开辟一个空间
敲黑板,重点来啦~
拓展:
我们今天学习了构造函数 init (),其在创建对象之后被Python自动调用初始化实例对象属性数据值,无返回值,并且构造函数不能被显示调用。
创建对象时,如果需要,构造函数可以接受参数。当创建没有构造函数的类时,Python会自动创建一个不执行任何操作的默认构造函数。
每个类必须有一个构造函数,即使它只依赖于默认构造函数
好啦,以上是本期内容,欢迎大佬评论区指正~
调试方法:
1.换一种方式执行:比如手动的方式,挨着一条一条执行,如果这样手动每次都能成功
考虑在语句间的加入timeout
2.打开文件,USB口,用完后一定要关闭
import serial
ser=serial.Serial('/dev/ttyUSB0')# open serial port
print(ser.name)# check which port was really used
ser.write(b'hello')# write a string
ser.close()
3.执行系统命令最好用os.popen(),而不是os.system()
如果系统命令用到了/dev/ttyUSB这些资源,而没有释放,如果重复执行os.system(),可能会失败。而os.popen()是子进程,调用结束,就会释放资源,所以重复执行os.popen()可以保证成功。
4.用with open() as f 代替open(),因为前者不需要关闭文件。
是因为你的模块的路径不对,必须先指定路径
PyObject *sys = PyImport_ImportModule("sys");
PyObject *path = PyObject_GetAttrString(sys, "path");
PyList_Append(path, PyString_FromString("."));