Динамический вызов объектной функции внутри другой объектной функцииPython

Программы на Python
Anonymous
Динамический вызов объектной функции внутри другой объектной функции

Сообщение Anonymous »

Я пытаюсь создать систему профессий и навыков для своей ренпи-игры
Я создаю и сохраняю все задания и навыки внутри класса и вызываю их в зависимости от фактической работы игрока, когда нужно, но я могу понять, как вызвать конкретную функцию объекта навыка для задания, чтобы дать опыт навыку, это то, что у меня есть.
Я не могу найти способ сделать это get_exp() "ganar_exp() работает для спортивного мастерства "депортация")
##List of skills

default deporte = Skill("deporte",0,0,1.25)

default oratoria = Skill("oratoria",0,0,1.50)

##List of jobs

default gym = Job("gym",[26,42],46,fuerza,deporte,1)

...

class Skill(object):

def __init__(self,nombre,exp,nivel,dificultad):
self.nombre = nombre
self.exp = exp
self.nivel = nivel
self.dificultad = dificultad

## this function give experience to the skill and lvl it up

def ganar_exp(cantidad):
self.exp+=cantidad
if self.exp >= self.nivel*4*self.dificultad:
self.nivel+=1

class Job(object):

global diligencia

def __init__(self,nombre,horario,sueldo,primaria,secundaria,tier):
self.nombre = nombre
self.horario = horario
self.primaria = primaria
self.secundaria = secundaria
self.sueldo = sueldo
self.tier = tier
self.ganancia = (sueldo+((primaria*1.5)+((secundaria.nivel+1)*1.2)+((diligencia+1)*1.1)))*tier

## this function is called when the player go to his work

def trabajar(self):
global currentTime
global dinero

while currentTime!=self.horario[1]:
advanceTime()

dinero += self.ganancia
self.secundaria.ganar_exp(1) ##this is wrong because i cant find the correct code for this

В последней строке мне нужно дать EXP вторичному навыку этой работы, вызвав функцию этого конкретного объекта для этого навыка.
Я Я пытался использовать dir(), чтобы получить некоторые значения и небольшие отступы, экспериментировал с тем, как я вызываю функцию, и читал документацию, но не мог понять, как написать эту строку кода.
Изменить 1:
Ошибка в этой конкретной попытке была:
File "game/script.rpy", line 694, in $
gym.trabajar()
File "game/script.rpy", line 183, in trabajar self.secundaria.ganar_exp(1)
TypeError: ganar_exp() takes 1 positional argument but 2 were given


Подробнее здесь: https://stackoverflow.com/questions/790 ... t-function

Вернуться в «Python»