/ / Używanie argumentu __init__ w innych funkcjach tej samej klasy - python

Używanie argumentu __init__ w innych funkcjach tej samej klasy - python

Próbuję więc zaprojektować klasę dla bronisystem w grze tekstowej. Zasadniczo chcę, aby wszystkie miecze zadawały 1-6 obrażeń, a następnie dodawały obrażenia na podstawie modyfikatora broni. Mam klasę do pracy, jeśli wywołam funkcję w klasie za pomocą modyfikatora, ale chcę ustawić klasę raz i nie trzeba jej wpisywać wiele razy

To jest kod, który mam.

import dice #uses random generation to simulate dice rolls

class sword():

def __init__(self, name, modifier):
self.name = name
self.mod = modifier

def dmg(self, modifier):
base = dice.d6

self.dmg = base + modifier
return self.dmg

x = sword("Sword of coolness", 1)
print x.name
print x.dmg(1)

Odpowiedzi:

2 dla odpowiedzi № 1

Właśnie dlatego to zrobiłeś self.mod = modifier. Teraz wartość jest dostępna dla metod jako self.mod. Abyś mógł stworzyć swoją metodę:

def dmg(self):
base = dice.d6

self.dmg = base + self.mod
return self.dmg

Jak zauważa YS-L, w komentarzu prawdopodobnie nie chcesz tego robić, ponieważ nadpisujesz dmg metoda z wartością. Może lepszym pomysłem jest nadanie tej metodzie innej nazwy:

def modify_dmg(self):
base = dice.d6

self.dmg = base + self.mod
return self.dmg