Распечатать список атрибутов - PullRequest
0 голосов
/ 09 декабря 2018

Новый кодер здесь.Вот мой тестовый код:

class Dog:
   def __init__ (self, name, age):
    self.name = name
    self.age = age

dog1 = Dog('Peter', 15)
dog2 = Dog('Grayson', 15)

dogs = [dog1, dog2]

Я хочу напечатать список всех собак в возрасте 15 лет. Как правильно это сделать?

Ответы [ 5 ]

0 голосов
/ 09 декабря 2018

Я бы предложил этот подход:

dogs=[]
dogs.append( Dog('Peter', 15) )
dogs.append( Dog('Grayson', 15) )
dogs.append( Dog('Boston', 1) )

dogs_aged_15 = [dog for dog in dogs if dog.age == 15]

for dog in dogs_aged_15:
  print(dog.name)

# Peter
# Grayson
0 голосов
/ 09 декабря 2018
 d = [i.name if i.age == 15 else -1 for i in dogs]

'd' - список имен собак в возрасте 15 лет.

0 голосов
/ 09 декабря 2018

Во-первых, если вы хотите напечатать имя, когда вы печатаете переменную dog (d), вы захотите поместить это в свой класс Dog:

def __repr__(self):
    return self.name

Затем используйте:

print ([d for d in dogs if d.age == 15])

Вышеприведенное утверждение совпадает с:

for d in dogs:  # iterates through the dogs list
    if d.age == 15:
        print(d)
0 голосов
/ 09 декабря 2018

для вашего примера вы можете сделать так:

for dog in dogs:  
    if dog.age == 15:
        #just print name of dog
        print(dog.name)
        #print the dog object
        print(dog)

повеселиться:)

0 голосов
/ 09 декабря 2018

Вы можете попробовать это:

print(*(dog.name for dog in dogs if dog.age == 15), sep='\n')

, которая напечатает имена собак в возрасте 15 лет в отдельных строках:

Peter
Grayson

Чтобы сохранить их в виде списка:

print([dog.name for dog in dogs if dog.age == 15])
# ['Peter', 'Grayson']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...