首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >AttributeError:“硬币”对象没有属性“硬币”

AttributeError:“硬币”对象没有属性“硬币”
EN

Stack Overflow用户
提问于 2022-02-04 03:54:48
回答 1查看 111关注 0票数 0

我将coin.py导入到main_game.py中,如下所示:

import coin

coin.py包含一个类Coin,它不带附加参数。以下是coin.py的内容

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Coin(pygame.sprite.Sprite):

    def __init__(self):
        super().__init__()

        self.image = pygame.image.load("gold.png").convert()
        self.image.set_colorkey(BLACK)
        self.bump_sound = pygame.mixer.Sound("coin.wav")

        self.rect = self.image.get_rect()

当我试图实例化这个类的对象时,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
coin = coin.Coin()

我得到以下错误:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Traceback (most recent call last):
  File "C:\dev_projects\python\pygame_projects\final_project\main_game.py", line 39, in <module>
    coin = coin.Coin()
AttributeError: 'Coin' object has no attribute 'Coin'

最初的研究提出了一个缩进问题,所以我重新创建了这个小类,并将其保存在一个新文件中,并删除了这个旧文件。我也有同样的问题。

接下来,我将coin.py重命名为treasure.py,更新了main_game.py文件,问题就消失了。我把它重命名为coi.py来测试它,这也是没有问题的。当我将文件重命名为coin.py时,问题再次出现。

再说一遍,我没有在这里摆弄任何类型的缩进,只是重命名为coin.py。我可以继续前进,因为我有一个解决办法,但我想知道到底是什么原因导致这个问题的具体名称硬币?

你知道coin.py会有什么问题吗?当文件名为help(coin)时,这里是coin.py:有关模块硬币对象中硬币的帮助:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Coin(pygame.sprite.Sprite)
 |  simple base class for visible game objects
 |
 |  pygame.sprite.Sprite(*groups): return Sprite
 |
 |  The base class for visible game objects. Derived classes will want to
 |  override the Sprite.update() method and assign Sprite.image and Sprite.rect
 |  attributes.  The initializer can accept any number of Group instances that
 |  the Sprite will become a member of.
 |
 |  When subclassing the Sprite class, be sure to call the base initializer
 |  before adding the Sprite to Groups.
 |
 |  Method resolution order:
 |      Coin
 |      pygame.sprite.Sprite
 |      builtins.object
 |
 |  Methods defined here:
 |
 |  __init__(self)
 |      Initialize self.  See help(type(self)) for accurate signature.
 |
 |  ----------------------------------------------------------------------
 |  Methods inherited from pygame.sprite.Sprite:
 |
 |  __repr__(self)
 |      Return repr(self).
 |
 |  add(self, *groups)
 |      add the sprite to groups
 |
 |      Sprite.add(*groups): return None
 |
 |      Any number of Group instances can be passed as arguments. The
 |      Sprite will be added to the Groups it is not already a member of.
 |
 |  add_internal(self, group)
 |
 |  alive(self)
 |      does the sprite belong to any groups
 |
 |      Sprite.alive(): return bool
 |
 |      Returns True when the Sprite belongs to one or more Groups.
 |
 |  groups(self)
 |      list of Groups that contain this Sprite
 |
 |      Sprite.groups(): return group_list
 |
 |      Returns a list of all the Groups that contain this Sprite.
 |
 |  kill(self)
 |      remove the Sprite from all Groups
 |
 |      Sprite.kill(): return None
 |
 |      The Sprite is removed from all the Groups that contain it. This won't
 |      change anything about the state of the Sprite. It is possible to
 |      continue to use the Sprite after this method has been called, including
 |      adding it to Groups.
 |
 |  remove(self, *groups)
 |      remove the sprite from groups
 |
 |      Sprite.remove(*groups): return None
 |
 |      Any number of Group instances can be passed as arguments. The Sprite
 |      will be removed from the Groups it is currently a member of.
 |
 |  remove_internal(self, group)
 |
 |  update(self, *args)
 |      method to control sprite behavior
 |
 |      Sprite.update(*args):
 |
 |      The default implementation of this method does nothing; it's just a
 |      convenient "hook" that you can override. This method is called by
 |      Group.update() with whatever arguments you give it.
 |
 |      There is no need to use this method if not using the convenience
 |      method by the same name in the Group class.
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors inherited from pygame.sprite.Sprite:
 |
 |  __dict__
 |      dictionary for instance variables (if defined)
 |
 |  __weakref__
 |      list of weak references to the object (if defined)

因此,我可以调用硬币文件的帮助,它告诉我它有一个类硬币,但是即使我试图在它抛出的解释器中实例化它:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> coin = coin.Coin()
Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    coin = coin.Coin()
AttributeError: 'Coin' object has no attribute 'Coin'

也许是来自pygame的干扰吗?

EN

回答 1

Stack Overflow用户

发布于 2022-02-04 04:19:33

问题是,您正在声明一个名为硬币的新变量,然后尝试从它访问硬币类。这意味着该文件不再与变量硬币相关联,因此无法访问硬币class.To,该文件名为coin.py,您需要将变量硬币重命名为其他文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70985981

复制
相关文章
noip模拟-确定的位置(map + vector)
想清楚了就不难 这题还是在c程上机课的时候a掉的 还是aaa和vv的命名,本家独创 还是只会举例论证,wztcl 题目:确定的位置 描述 hzy很喜欢了解歌曲的排行榜,他每次都从XX网站获知。 由于这个网站想对这个歌曲的排行榜含蓄的告诉大家,组织了一个“猜榜大赛”。 这个网站宣布一些歌曲的信息,那些歌曲在歌曲榜上的前几名,例如: ·”qianlizhiwai” 是在榜上的前三名 ·”qianlizhiwai”,”dachengxiaoai” 是在歌曲榜的前两名 网站不会把歌曲的名次十分明确的告诉你,他就是
wenzhuan
2022/08/15
3570
机器人变身(类与对象)【期中模拟】
编写一个机器人类,包含属性有机器名、血量、伤害值、防御值、类型和等级。其中血量、伤害和防御和等级、类型相关:
叶茂林
2023/07/30
1790
利用面向对象思想,写一个名为Account的类模拟账户,模拟存取钱系统。
该类的属性和方法如下所示。 该类包括的属性:账户id,余额balance,年利率annualInterestRate; 包含的方法:各属性的set和get方法。取款方法withdraw(),存款方法deposit()
百思不得小赵
2022/12/01
5250
C/C++:string类的模拟实现
string的文档网站 string类的介绍以及一些常见问题 String是一个管理字符数组的类,要求这个字符数组结尾用 ‘\0’ 标识 涉及的问题如下: 拷贝构造和赋值重载实现 深拷贝 增删查改的相关接口 重载一些常见的运算符如:[] 、>> 、<< 等 迭代器 对于一个成员函数,什么时候该加const呢? 1 、如果是 只读函数 ,则要加 const 2 、如果是 只写函数 ,则不能加 const 3 、如果 既是可读又是可写的函数 ,则要重载两个版本的函数,即 const 版本
利刃大大
2023/04/12
3650
【C++】string类的模拟实现
1. 库里面的构造函数实现了多个版本,我们这里就实现最常用的参数为const char *的版本,为了同时支持无参的默认构造,这里就不在多写一个无参的默认构造,而是用全缺省的const char *参数来替代无参和const char *参数的两个构造函数版本。
举杯邀明月
2023/04/12
6360
【C++】string类的模拟实现
【C++】string类的模拟实现
分为无参和带参这两种构造函数。无参构造函数默认构造空字符串"",所以我们只需要给一个缺省值即可。
平凡的人1
2022/11/21
7360
【C++】string类的模拟实现
Flash如何模拟EEPROM
很多的MCU控制器不带有片上EEPROM,但是我们有时候鉴于成本的考虑又不想外扩EEPROM,所以经常用Flash来模拟EEPROM存储,但是Flash都是块擦除,所以需要考虑频繁擦除的影响,需要借鉴软件算法来综合考虑,最近经常在使用NXP的KE系片子,KE系列除过KE02带有256字节的片上EEPROM外,KE04和KE06都不带片上EEPROM,所以我们采用Flash来模拟。
用户1605515
2019/06/17
2.9K0
Flash如何模拟EEPROM
如何在 Android 模拟器中模拟 GPS 位置
可以通过 Telnet 连接到仿真器。然后你有一个模拟器控制台,可以让你输入某些数据,比如地理定位、网络等。
张云飞Vir
2021/12/06
9.8K0
如何在 Android 模拟器中模拟 GPS 位置
【游戏开发】在Lua中实现面向对象特性——模拟类、继承、多态
  Lua是一门非常强大、非常灵活的脚本语言,自它从发明以来,无数的游戏使用了Lua作为开发语言。但是作为一款脚本语言,Lua也有着自己的不足,那就是它本身并没有提供面向对象的特性,而游戏开发是一项庞大复杂的工程,如果没有面向对象功能势必会为开发带来一定的不便。不过幸好Lua中有table这样强大的数据结构,利用它再结合元表(metatable),我们便可以很方便地在Lua中模拟出类、继承和多态等面向对象编程具有的特性。
马三小伙儿
2018/09/12
3.1K0
[C++]日期类计算器的模拟实现
彼此分享给大家的目的一样,希望所有正在学技术被技术所困的友友们,在艰难的时候看到这句话能披荆斩棘,勇往直前!
IT编程爱好者
2023/04/12
6300
[C++]日期类计算器的模拟实现
Mastercam 实体模拟中如何加入夹具一起模拟?
当图档载入设定好素材时,可在上面选单选择“机器”-模拟右下会有一个箭头”模拟选项”,点选可设定夹具。
lrglu
2022/05/16
1.5K0
Mastercam 实体模拟中如何加入夹具一起模拟?
如何模拟弱网环境?
运维过程中,最复杂的问题,莫过于网络的问题,而网络问题最烦的就是无法复现,这篇介绍一个强大的网络模拟工具Netem
李俊鹏
2020/06/11
2.9K0
如何模拟弱网环境?
用LinkedList类实现&nbsp;模拟堆栈…
public static void main(String [] args)
明明如月学长
2021/08/27
4020
接口vs抽象类的区别?如何用普通的类模拟抽象类和接口?
在面向对象编程中,抽象类和接口是两个经常被用到的语法概念,是面向对象四大特性,以及很多设计模式、设计思想、设计原则编程实现的基础。比如,我们可以使用接口来实现面向对象的抽象特性、多态特性和基于接口而非实现的设计原则,使用抽象类来实现面向对象的继承特性和模板设计模式等等。
码农架构
2021/01/19
1.2K0
[PyUserInput]模拟鼠标和键盘模拟
http://www.lfd.uci.edu/~gohlke/pythonlibs/
周小董
2019/03/25
3.3K0
Python手写模拟单向链表对象,栈对象和树
单向链表: class error(Exception): def __init__(self,msg): super(error,self).__init__() self.msg=msg def __str__(self): return self.msg class Node: def __init__(self,ele): self.ele=ele self.next=None class
步履不停凡
2019/09/11
6460
【C++】list迭代器的深度剖析及模拟实现(感受类封装,类和对象的思想)
1. 从迭代器的上层角度来看,vector和list的迭代器的使用没有差别,迭代器的begin和end返回的是左闭右开的区间位置[ begin(),end() )。
举杯邀明月
2023/04/12
1.1K0
【C++】list迭代器的深度剖析及模拟实现(感受类封装,类和对象的思想)
银行排队模拟(离散事件模拟)
这里用的是链队列,所以要有一个节点结构体和一个队列类,其次节点的数据域里面存放的是用户结构体类型,所以还要定义一个用户结构体类型
大忽悠爱学习
2021/03/12
1.6K0
银行排队模拟(离散事件模拟)
JMeter如何模拟不同的网络速度
在大多数情况下,移动设备用户通过其蜂窝运营商网络访问互联网。覆盖范围将根据其位置而有所不同,这意味着连接速度将有所不同。确保您的网站或应用程序能够完全处理移动设备和平板电脑,即使它们具有不同的互联网连接速度,也至关重要。
FunTester
2020/04/08
1.1K0
如何在phpunit中mock(模拟)一个单例类
Mock简介 当我们对A类进行单元测试时,A类可能依赖了B类,为了减少依赖,方便A类方法的测试,我们可以模拟一个B类,简单规定其各方法的返回值(而非真正实现具体逻辑)。Phpunit中提供了一套模拟类的api,简单使用如下:
跑马溜溜的球
2020/12/07
3.1K0

相似问题

jMock模拟类与接口

11

使用jMock注入模拟对象

15

使用带有具体类的模拟对象的JMock

11

属性设置为模拟对象jmock。

20

仙人掌与模拟对象(jMock,简易模拟)

23
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文