Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我的班级是一个;int";当我将其用作继承属性错误时,解决方案是什么?_Python_Python 3.x_Class_Attributeerror - Fatal编程技术网

Python 我的班级是一个;int";当我将其用作继承属性错误时,解决方案是什么?

Python 我的班级是一个;int";当我将其用作继承属性错误时,解决方案是什么?,python,python-3.x,class,attributeerror,Python,Python 3.x,Class,Attributeerror,代码是 class Raw: def __init__(he,dx=0,dy=0,ax=0,ay=0,rx=1.1,ry=1.1): # Position input('Type{0}'.format(type(he))) he.x = 0 he.y = 0 # Texture he.src = srcNone() he.isNoneSrc = 1 #

代码是

class Raw:
    def __init__(he,dx=0,dy=0,ax=0,ay=0,rx=1.1,ry=1.1):
        #   Position
        input('Type{0}'.format(type(he)))
        he.x = 0
        he.y = 0
        #   Texture
        he.src = srcNone()
        he.isNoneSrc = 1
        #
        he.dx, he.dy = dx, dy
        #
        he.ax, he.ay = ax, ay
我的类是一个“int”,当我将它用作继承时,解决方案是什么 当类用作继承时,它是转换为“int”的类的代码

使用该类进行继承的类的代码:

class WithSrc(Raw):
    def __init__(he,src,dx=0,dy=0,ax=0,ay=0):
        print('Type Raw',type(Raw))
        Raw.__init__(dx,dy,ax,ay)
        he.changeTexture(src) #he.src = src
错误是

Traceback (most recent call last):
  File "D:\_Raphaël\code\Rgame code\ProgrammeN1\p1.py", line 47, in <module>
    ecran['Test'] = WithSrc(image.load('Scoeur.png'))
  File "D:\programme\lib\Rgame\PreClass.py", line 75, in __init__
    Raw.__init__(dx,dy,ax,ay)
  File "D:\programme\lib\Rgame\PreClass.py", line 27, in __init__
    he.x = 0
AttributeError: 'int' object has no attribute 'x'
回溯(最近一次呼叫最后一次):
文件“D:\\u Raphaël\code\Rgame code\ProgrammeN1\p1.py”,第47行,在
ecran['Test']=WithSrc(image.load('Scoeur.png'))
文件“D:\program\lib\Rgame\PreClass.py”,第75行,在\uuu init中__
原始。初始(dx,dy,ax,ay)
文件“D:\program\lib\Rgame\PreClass.py”,第27行,在\uuu init中__
he.x=0
AttributeError:“int”对象没有属性“x”
代码输出:

Type Raw <class 'type'>
Type<class 'int'>
输入原始数据
类型
这意味着在使用方法init()之前,Raw的类型为“type”,然后将其转换为方法init使用的类型“int”

感谢您的帮助抱歉英语不太好,我是法国人。

在本节:

Raw.__init__(dx,dy,ax,ay)
您正在调用
Raw.\uuuu init\uuuu
。但看看它需要什么样的论据:

def __init__(he,dx=0,dy=0,ax=0,ay=0,rx=1.1,ry=1.1):
调用时,
he
缺失,因此相当于:

Raw.__init__(he=dx,dx=dy,dy=ax,ax=ay)
因此,您的类没有转换为
int
。但是
dx
确实是一个
int
,因此没有attr
x
。您需要将
he
添加到初始化中:

Raw.__init__(he,dx,dy,ax,ay)

当你说“类被转换为‘int’”时,你的确切意思是什么?回溯(最后一次调用):文件“D:_Raphaël\code\Rgame code\programme1\p1.py”,第47行,在ecran['Test']=with rc(image.load('Scoeur.png'))文件“D:\program\lib\Rgame\PreClass.py”,第75行,在init Raw中“D:\Program\lib\Rgame\PreClass.py“,第27行,在init he.x=0 AttributeError中:'int'对象没有属性'x',谢谢您的提问。这让我再次阅读了我的代码。这不是直接相关的,而是相切的:按照惯例,实例方法的第一个参数应该命名为
self
。正如您在这里所做的那样,将其命名为
,这并没有错,但它令人困惑。“始终使用
self
作为实例方法的第一个参数。”