Как использовать список как переменную класса, чтобы экземпляр объекта (аргументы) добавлялся в список? - PullRequest
0 голосов
/ 10 апреля 2019

Я хотел бы просто составить список видов кофе, но получить сообщение о том, что список не определен.Нужно ли использовать self в конструкторе при ссылке на переменную класса?

Я пытался изменить оператор return, чтобы он возвращал self.coffelist.append(name), но затем получаю другую ошибку: 'Function' object has no attribute 'append'.

class coffe:

    coffelist = []

    def __init__(self,name,origin,price):
        self.name = name
        self.origin = origin
        self.price = price
        return (self.coffelist.append(self.name))

    def coffelist(self):
        print(coffelist)


c1=coffe("blackcoffe","tanz",55)
c2=coffe("fineroasted","ken",60)

Ответы [ 3 ]

0 голосов
/ 11 апреля 2019

Я думаю, это показывает, как делать то, что вы хотите. Я также изменил ваш код в соответствии с PEP 8 - Руководство по стилю для кода Python и исправил некоторые слова с ошибками.

class Coffee:  # Class names should Capitalized.

    coffeelist = []  # Class attribute to track instance names.

    def __init__(self,name,origin,price):
        self.name = name
        self.origin = origin
        self.price = price
        self.coffeelist.append(self.name)

    def print_coffeelist(self):
        print(self.coffeelist)


c1 = Coffee("blackcoffee", "tanz", 55)
c1.print_coffeelist()  # -> ['blackcoffee']
c2 = Coffee("fineroasted", "ken", 60)
c1.print_coffeelist()  # -> ['blackcoffee', 'fineroasted']

# Can also access attribute directly through the class:
print(Coffee.coffeelist)  # -> ['blackcoffee', 'fineroasted']
0 голосов
/ 12 апреля 2019

да, спасибо, это именно то, что я хотел!Я не был уверен ... Я думал, что вы можете сделать 2 вещи одновременно в операторе return, оба возвращаются и добавляются.Я предполагаю, что Python часто очень гибок, а иногда нет.спасибо

0 голосов
/ 10 апреля 2019

Это потому, что вы назвали один из ваших методов как coffelist.

...