[英]How to create a sheet under a specific folder with google API for python?
[英]Python, how to create specific classes under a big class
這里是新的python學習器。 我正在嘗試在python中設計一個文本rpg,我希望在游戲的特定部分增加所有敵方生物的統計數據。 這是我為那些敵人准備的代碼:
class Executioner:
def __init__(self,name):
self.name = name
self.potions = 0
self.maxhp = 800
self.hp = self.maxhp
self.attack = 25
self.ability = 0
self.defense = 0
self.goldgain = 333
self.expgain = 250
ExecutionerIG = Executioner("Executioner the slayer")
class Goblin:
def __init__(self,name):
self.name = name
self.potions = 0
self.maxhp = 80
self.hp = self.maxhp
self.attack = 25
self.ability = 0
self.defense = 0
self.goldgain = 5.5
self.expgain = 22
GoblinIG = Goblin("Goblin")
class Zombie:
def __init__(self,name):
self.name = name
self.potions = 0
self.maxhp = 180
self.hp = self.maxhp
self.attack = 19
self.ability = 0
self.defense = 0
self.goldgain = 7
self.expgain = 28
ZombieIG = Zombie("Zombie")
我認為一種快速實現此目的的方法可以是將這些類定義為一個稱為敵人的大類,然后再調用敵人.hp,敵人。攻擊等來增加。
但是我也不知道該怎么做,因為我現在很疲倦。
我們將非常感謝您提出有關如何通過指定大型班級下的小班級來增加班級統計信息或快速增加班級統計信息的建議(僅輸入並增加班級統計信息是行不通的,因為我會遇到很多敵人)。
不,那不是一個好方法。 嵌套類在Python中很少有用,並且在這里肯定不會有用。
最好將它們放入可以循環瀏覽的列表中:
enemies = []
...
ExecutionerIG = Executioner("Executioner the slayer")
enemies.append(ExecutionerIG)
等等。 然后,在必要時進行迭代:
for enemy in enemies:
enemy.hp += 1
順便說一句,我會質疑您是否真的需要Executioner,Zombie和Goblin的單獨類? 它們的每個統計信息的編號都不同,因此對於一般的敵人類,也許您應該只在__init__
方法中接受這些值。
丹尼爾·羅斯曼(Daniel Roseman)所說的是真的,在編寫代碼時,您應該盡量不要重復自己。 如果兩個對象非常相似並且僅在某些特定值上有所不同,那么實際上它們是同一對象。 所有自行車都是自行車,但是有些自行車具有不同的車輪尺寸。 在這里,您的對象都是一個敵人對象,可以照此實現。
但是,我將回答您的問題,因為了解子類非常重要。 要對一個類進行子類化,可以在定義中傳入父類,如下所示:
class Zombie(Enemy):
然后,如果像這樣定義了Enemy類,例如:
class Enemy: def attack(): <your code>
您可以對僵屍對象發起攻擊。 它將在Zombie類中尋找Attack(),如果找不到它,它將在父類中尋找它。 如果在父類中找不到它,它將在該父類中尋找它,依此類推,一直向上移動到頂層對象。 如果根本找不到,則會引發異常。 例如,如果您在Zombie類中定義了Attack(),那么它將覆蓋Enemy類中的Attack()。
鑒於所有這些,丹尼爾·羅斯曼是對的。 您應該將所有這些歸為一類,並在構建時傳遞hp等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.