2013-03-02 2 views
0
randomState = collections.namedtuple('randomState', ['player', 'score']) 

Допустим, у меня есть namedtuple, содержащий игрока/счет, и если бы я был заменить любую из этих функций, я хотел бы сделать:Классы Python и функция замены?

def random(state): 
    return state._replace(score='123') 

Как создать класс, который имеет функцию, которая в основном похож на namedtuple, и он может заменить игрока или счет вручную?

class Random: 
    def abc(self, score): 
     if self.score == '123': 
      ###had it were a namedtuple, I would use the replace function here, but classes don't allow me to do that so how would I replace 'score' manually? 

Я не уверен, если я осмыслении, но если кто-нибудь понимает мою проблему я бы очень ценим ваше мнение. Спасибо

ответ

1

Если у вас есть вопрос правильно, вам нужна функция, которая, в зависимости от значения оценки, присваивает ей какое-то новое значение. Вы ищете что-то и ищете?

# recommended to use object as ancestor 
class randomState(object): 
    def __init__(self, player, score): 
     self.player = player 
     self.score = score 

    def random(self, opt_arg1, opt_arg2): 
     # you may want to customize what you compare score to 
     if self.score == opt_arg1: 
      # you may also want to customize what it replaces score with 
      self.score = opt_arg2 

Пример:

my_state = randomState('David', '100') 
new_state = my_state.random('100', '200') 
+0

OMG. Огромное спасибо. Я не могу поверить, что не думал об этом. – Kara