2015-02-21 3 views
0

Это может быть очень простой вопрос и, вероятно, был задан раньше, но это, вероятно, проблема для меня lacking vocabulary, поэтому я заранее извиняюсь.Как добавить несколько не включенных в список элементов в класс?

От the python documentation:

class Dog: 
    def __init__(self, name): 
     self.name = name 
     self.tricks = [] # creates a new empty list for each dog 
    def add_trick(self, trick): 
     self.tricks.append(trick) 

d = Dog('Fido') 
d.add_trick('roll over') 
d.add_trick('fetch') 
d.tricks 

Это возвращается, как и ожидалось:

['roll over', 'fetch'] 

Но если бы я затем запустить:

d.add_trick('play dead', 'high five') 

Я получаю сообщение об ошибке, так что я пробовал:

d.add_trick(['play dead', 'high five']) 

Но это дает мне:

d.tricks 
['roll over', 'fetch', ['play dead', 'high five']] 

Когда я хочу:

['roll over', 'fetch', 'play dead', 'high five'] 

Как я могу unlist список элементов добавляется к классу?

ответ

0

Использование extend:

d.tricks.extend(['play dead', 'high five']) 

d.tricks 
['roll over', 'fetch', 'play dead', 'high five'] 

Или вы могли бы изменить add_tricks к:

def add_trick(self, *trick): 
    self.tricks.extend(trick) 
+0

Мне нравится этот ответ, потому что это только одна дополнительная вещь! И теперь я научился «расширять»! Я отмечу это как ответ, как только это позволит мне (видимо, существует ограничение по времени?) – wugology

0

Вы можете переопределить метод Dog.add_trick принимать переменное число аргументов, а затем добавьте их в список с помощью list.extend:

def add_trick(self, *tricks): 
    self.tricks.extend(tricks) 

Demo:

>>> class Dog: 
...  def __init__(self, name): 
...   self.name = name 
...   self.tricks = [] 
...  def add_trick(self, *tricks): 
...   self.tricks.extend(tricks) 
... 
>>> d = Dog('Fido') 
>>> d.add_trick('roll over') 
>>> d.add_trick('fetch') 
>>> d.tricks 
['roll over', 'fetch'] 
>>> d.add_trick('play dead', 'high five') 
>>> d.tricks 
['roll over', 'fetch', 'play dead', 'high five'] 
>>> 

Подробнее о синтаксисе *tricks можно найти в разделе Function definitions в документации.

Смежные вопросы