python的new出错
Python是一种广泛利用于编程领域的高级语言,在平常开发中使用Python可以带来许多便利。但是,使用Python时也会遇到各种问题,其中一个比较常见的毛病就是new出错。
import numpy as np class MyClass: def __new__(cls): return np.array([1,2,3]) mc = MyClass() print(mc)
以上这段代码在运行时会报错:
TypeError: __new__() should return a type, not 'numpy.ndarray'
这是由于在类MyClass的__new__()方法中返回了一个numpy数组,而__new__()方法应当返回一个相应类的实例。正确的类定义方式应当是:
class MyClass: def __new__(cls): return super().__new__(cls)
这里使用了super()函数来调用基类的__new__()方法,从而返回一个MyClass的实例。
在Python中,__new__()方法是一个类的构造函数,用于创建实例并返回实例对象。与__new__()对应的是__init__()方法,用于初始化实例对象,对刚刚创建的实例进行初始化操作。在Python中,当一个类被实例化时,首先会调用__new__()方法,然后调用__init__()方法完成实例的初始化。因此,我们在编写Python程序时,应当尽量清楚地分离出__new__()和__init__()方法的职责,以便于程序的可读性和可保护性。
总之,当我们遇到new出错的问题时,需要仔细检查自己的代码会不会符合Python的要求,避免一些常见但可预防的毛病。在编写程序时保持良好的编程习惯,其实不断学习生态圈中的新技术,也是解决问题的关键。
文章来源:丸子建站
文章标题:python的new出错
https://www.wanzijz.com/view/70098.html