8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

键入对象“敌人”没有属性“伤害”

ChrisMM 7月前

50 0
#尝试进入卫生系统? 阶级敌人: def __init __(自我,名称,健康,伤害): self.name =名称 self.health =健康 self.damage =损坏 def攻击(自我):
# attempt at a health system?

class Enemy:
    def __init__(self,name,health,damage):
        self.name = name
        self.health = health
        self.damage = damage
    def attack(self):
        print(f"The {goblin.name} attacks! Causing {goblin.damage}  damage!")
        player.health -= Enemy.damage
        print(f"You have {player.health}")
        

goblin = Enemy("goblin",100,20)

class Player:
    def __init__(self,health,damage):
        self.health = health
        self.damage = damage

player = Player(200,40)

goblin.attack()

error:

Traceback (most recent call last):File "c:\Users\user\Desktop\python stuff\project.py", line 10, in attackplayer.health -= Enemy.damage^^^^^^^^^^^^AttributeError: type object 'Enemy' has no attribute 'damage'

我刚刚开始编程,我不知道这个错误是什么意思。

我希望终端显示我创建的妖精会造成损坏,这是由其特定实例定义的。

妖精应该造成20种伤害,因为那是我写的。 我在称为“攻击”的“敌人”类中做了一种方法,它应该使用特定实例的名称和损坏,然后写入终端,对玩家造成了什么损害。 但是我得到了这个错误。 我不确定如何解决此问题。
帖子版权声明 1、本帖标题: 键入对象“敌人”没有属性“伤害”
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由ChrisMM在本站《python》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 错误是你写的
  • 我正在尝试使用多处理的共享内存块,以包含一个可与使用mpi4py创建的进程访问的numpy阵列。 基本教程在这里。 我制作了一个简单的代码来实现I ...

    我正在尝试使用 多处理 包含一个 numpy 阵列的共享内存块,可用于使用<创建的进程访问的阵列代码> mpi4py 。

    基本教程是<a href="https://docs.python.org/3/library/multiprocessing.shared_memory.html#multiprocessing.shared_memory.sharedmemory.sharedmemory.sharedmemory“rel=" rel="noflollwollow noreflollow noreferrer”hore </a y </a>> y/a>>>>>。 我制作了一个简单的代码以在以下脚本中实现它,并使用 mpirun -np 2 Python myScript.py 。 从终端运行它。
    import numpy as np
    from multiprocessing import shared_memory
    from mpi4py import MPI
    
    comm = MPI.COMM_WORLD
    pid = comm.Get_rank()
    npros = comm.Get_size()
    
    npts = 10
    dtyp = np.int64
    
    if pid == 0:
        arr = np.arange(npts, dtype=dtyp)
        shm = shared_memory.SharedMemory(create=True, size=arr.nbytes, name='trial')
        brr = np.ndarray(arr.shape, dtype=arr.dtype, buffer=shm.buf)
        brr[:] = arr[:]
        del arr
    
    comm.barrier()
    
    if pid == 1:
        existing_shm = shared_memory.SharedMemory(name='trial')
        crr = np.ndarray((npts), dtype=dtyp, buffer=existing_shm.buf)
        print(crr)
    
    comm.barrier()
    
    if pid == 1:
        del crr
        existing_shm.close()
    
    comm.barrier()
    
    if pid == 0:
        del brr
        shm.close()
        shm.unlink()
    

    但是,它会返回一些警告

    /home/peedaruos/miniconda/envs/py39/lib/python3.9/multiprocessing/resource_tracker.py:216: UserWarning: resource_tracker: There appear to be 1 leaked shared_memory objects to clean up at shutdown
      warnings.warn('resource_tracker: There appear to be %d '
    /home/peedaruos/miniconda/envs/py39/lib/python3.9/multiprocessing/resource_tracker.py:229: UserWarning: resource_tracker: '/trial': [Errno 2] No such file or directory: '/trial' warnings.warn('resource_tracker: %r: %s' % (name, e))
    

    不确定是否存在问题或可能会严重陷入困境。

  • 为什么要与MPI一起使用多处理共享信息? 似乎在您的设计中是一个矛盾 - MPI的全部要点是将其平行于太大而无法共享同一RAM的系统。
  • 我的意思是,您会遇到使用MPI的所有麻烦,但是您的程序只有在等级可以共享内存时起作用。
  • ray 7月前 0 只看Ta
    引用 6
    话虽如此,您的代码看起来正确,我不知道怎么了。 现在没有MPI,如果没有问题,我就无法再现您的问题。 警告是矛盾的 - 它告诉您“审判”尚未清理,但也告诉您找不到“审判”。 这里有一个更深的问题。
  • 并非真的,使用MPI创建的过程应该能够独立运行(我知道他们有自己的RAM空间)。 在这些过程之间使用共享内存空间可能会有可能的好处,例如 (1)如果过程只需要从磁盘中访问一些大数据(只读)才能进行,则可能需要将数据加载到共享内存块中,而不是每个MPI进程加载相同的大数据,从而负担系统的负担, (2)而不是传递诸如同步计算的数组之类的消息,而是可以共享信息,但可以更快地分享信息
  • 我知道共享记忆并行性的好处。 但是MPI专门针对您不想进行共享记忆并行性的情况。 您购买了一辆越野车,仅在高速公路上驱动它。
  • 不。 多处理。shared_memory不需要在某些父上创建。 OP链接的文档创建并使用来自两个独立交互式外壳的缓冲区。
  • 引用 10
    所以我的代码在下面 player = vlc.instance() player.set_user_agent(“ https”,“ Mozilla/5.0(Windows NT 10.0; Win64; X64))AppleWebkit/537.36(Khtml,像Gecko)Chrome/122.0.0.0.0.0.0.0.0.0.0.0.0.0

    ,我的代码在下面

    player = vlc.Instance()
                player.set_user_agent("https","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0")
                media_list = player.media_list_new()
                media_player = player.media_list_player_new()
                media = player.media_new(source)
                media_list.add_media(media)
                media_player.set_media_list(media_list)
                media_player.play()
                time.sleep(5)
    

    我正在制作gui python应用程序,并且实时流播放正常,它打开了VLC播放器窗口并播放流,问题是当我单击X尝试戒烟时,什么也不会发生。

    我必须将窗口ctrl-alt-alt-del停止播放。 因为这是一个实时流,我无法获得视频长度来使播放器完成比赛后退出,此外,我也希望能够关闭视频的能力,即使流还没有完成播放。

    任何帮助都将不胜感激,因为我只是不明白为什么单击X不会阻止玩家玩。

    tia

    尝试单击X,但玩家不会退出

返回
作者最近主题: