当我将它用作继承属性错误时,我的类是一个“int”,解决方案是什么?

问题描述 投票:1回答: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'

代码输出:

Type Raw <class 'type'>
Type<class 'int'>

这意味着在使用方法init()之前,类型为“type”,然后将其转换为init使用的方法类型“int”。

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

python python-3.x class attributeerror
1个回答
1
投票

在这个部分 :

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

你在叫Raw.__init__。但看看它需要什么参数:

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)
© www.soinside.com 2019 - 2024. All rights reserved.