как мне правильно напечатать предложение, используя переменные, определенные в моем собственном классе в python - PullRequest
1 голос
/ 01 августа 2020

Итак, я создал класс в python под названием Pizza, который принимает 4 аргумента ... Я хочу иметь возможность вставлять аргументы, а затем распечатывать их, чтобы получилось чистое предложение. Например, если я вставлю это в терминал ---

from Pizza import Pizza
appetizer = Pizza("Pepperoni", 16, 10.50, 10)
print(appetizer)

, я бы хотел получить такой результат --- Ваша пицца Pepperoni имеет диаметр 16 дюймов, цену 10,5 долларов США и 10 ломтиков за штуку. p ie

К сожалению, с моим кодом я продолжаю получать это, когда распечатываю переменную ---

<Pizza.Pizza object at 0x7f17b762f650>

Кто-нибудь знает, почему это происходит? Мой код ниже

class Pizza:
    def __init__(self, name, diameter, price, slices):
        self.name = name
        self.diameter = diameter
        self.price = price
        self.slices = slices
    def myfunc(self):
        print("Your" +  self.name + "pizza has a diameter of" + self.diameter + "inches, a price of" + self.price + "and" + self.slices + "slices per pie")

Ответы [ 3 ]

1 голос
/ 01 августа 2020

Отличный вопрос! Можно сделать имя объекта функцией str:

class Pizza:
    def __init__(self, name, diameter, price, slices):
        self.name = name
        self.diameter = diameter
        self.price = price
        self.slices = slices
    def __repr__(self):
        return "Your {} pizza has a diameter of {} inches, a price of {} and {} slices per pie".format(self.name,self.diameter,self.price,self.slices)


appetizer = Pizza("Pepperoni", 16, 10.50, 10)
print(appetizer)
0 голосов
/ 01 августа 2020

Вы говорите Python напечатать объект Pizza, поэтому он с радостью соответствует :). Также в методе myfunc() вы добавляете строки к числам (это вызовет ошибку).

Вместо этого вы должны попробовать следующее:

class Pizza:
    def __init__(self, name, diameter, price, slices):
        self.name = name
        self.diameter = diameter
        self.price = price
        self.slices = slices
    def myfunc(self):
        print("Your", self.name, "pizza has a diameter of", self.diameter, "inches, a price of", self.price, "and", self.slices, "slices per pie")

и

from Pizza import Pizza
appetizer = Pizza("Pepperoni", 16, 10.50, 10)
appetizer.myfunc()

вывод: Your Pepperoni pizza has a diameter of 16 inches, a price of 10.5 and 10 slices per pie

0 голосов
/ 01 августа 2020

попробуйте

from Pizza import Pizza
appetizer = Pizza("Pepperoni", 16, 10.50, 10).myfunc()
#you don't need to print appetizer because myfunc does it already

, а также измените класс Pizza на этот

class Pizza:
    def __init__(self, name, diameter, price, slices):
        self.name = name
        self.diameter = diameter
        self.price = price
        self.slices = slices
    def myfunc(self):
        print("Your " +  self.name + " pizza has a diameter of " + str(self.diameter) + " inches, a price of " + str(self.price) + " and " + str(self.slices) + " slices per pie")

, чтобы он не вызывал "TypeError: может только объединить str (не" int ") to str "ошибка

...