Class RandomEvent在Python中的简单问题

huangapple go评论114阅读模式
英文:

Simple problem with Class RandomEvent in Python

问题

我创建了一个带有随机事件的简单文本冒险游戏,这些事件积累了很多,我决定将它们分离到一个单独的类中。但之后我遇到了一个问题。看起来并不复杂,但我找不到解决办法。

  1. import random
  2. class Hero:
  3. def __init__(self, name):
  4. self.name = name
  5. hero1 = Hero('Bob')
  6. class RandEvents:
  7. def __init__(self, hero):
  8. self.hero = hero
  9. def event1(self):
  10. print(f'>>> {self.hero.name} text 1 event! <<<')
  11. def event2(self):
  12. print(f'>>> {self.hero.name} text 2 event! <<<')
  13. list_events = [RandEvents.event1, RandEvents.event2]
  14. event = random.choice(list_events)
  15. event(hero1)

我得到

  1. File "E:.py", line 17, in event1
  2. print(f'>>> {self.hero.name} text 1 event! <<<')
  3. ^^^^^^^^^
  4. AttributeError: 'Hero' object has no attribute 'hero'

我尝试创建一个名为rand_event()的函数,并将其移到HeroRandEvents类中。但是没有成功。

英文:

I create a simple text quest with random events, which accumulated a lot, and I decided to separate them into a separate class. But after that I got a problem. It doesn't look complicated, but I can't find a solution.

  1. import random
  2. class Hero:
  3. def __init__(self, name):
  4. self.name = name
  5. hero1 = Hero('Bob')
  6. class RandEvents:
  7. def __init__(self, hero):
  8. self.hero = hero
  9. def event1(self):
  10. print(f'>>> {self.hero.name} text 1 event! <<<')
  11. def event2(self):
  12. print(f'>>> {self.hero.name} text 2 event! <<<')
  13. list_events = [RandEvents.event1, RandEvents.event2]
  14. event = random.choice(list_events)
  15. event(hero1)

I get

  1. File "E:.py", line 17, in event1
  2. print(f'>>> {self.hero.name} text 1 event! <<<')
  3. ^^^^^^^^^
  4. AttributeError: 'Hero' object has no attribute 'hero'

I tried to create a function rand_event(), and move it to a class Hero or RandEvents. To no avail.

答案1

得分: 1

  1. 固定
  2. ```python
  3. import random
  4. class Hero:
  5. def __init__(self, name):
  6. self.name = name
  7. hero1 = Hero('Bob')
  8. class RandEvents:
  9. def __init__(self, hero):
  10. self.hero = hero
  11. def event1(self):
  12. print(f'>>> {self.name} text 1 event! <<<')
  13. def event2(self):
  14. print(f'>>> {self.name} text 2 event! <<<')
  15. list_events = [RandEvents.event1, RandEvents.event2]
  16. event = random.choice(list_events)
  17. event(hero1)
  1. <details>
  2. <summary>英文:</summary>
  3. Fixed:

import random

class Hero:
def init(self, name):
self.name = name

hero1 = Hero('Bob')

class RandEvents:
def init(self, hero):
self.hero = hero

  1. def event1(self):
  2. print(f&#39;&gt;&gt;&gt; {self.name} text 1 event! &lt;&lt;&lt;&#39;)
  3. def event2(self):
  4. print(f&#39;&gt;&gt;&gt; {self.name} text 2 event! &lt;&lt;&lt;&#39;)

list_events = [RandEvents.event1, RandEvents.event2]
event = random.choice(list_events)
event(hero1)

  1. </details>

huangapple
  • 本文由 发表于 2023年3月12日 16:10:06
  • 转载请务必保留本文链接:https://go.coder-hub.com/75711813.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定