Как вы умножаете значения внутри класса в Python? - PullRequest
0 голосов
/ 27 мая 2018
class bread:
    def __init__(self,grain,cost,number):
        self.grain=(grain)
        self.cost=int(cost)
        self.number=int(number)
    def price(self):
        p=self.cost*self.number
        print(p)

apple=bread("wholemeal",int(2),int(12))
print(apple.grain,apple.cost,apple.number)
print (apple.price)

После того, как я введу этот блок кода, я должен ожидать увидеть 24, но вместо этого я получаю:

связанный метод bread.price из <<strong> main .breadобъект 0x05CC7430 >>

Я новичок в работе и начинаю экспериментировать, но не могу найти решение.

Ответы [ 3 ]

0 голосов
/ 27 мая 2018

В этом случае вы, похоже, не хотите иметь дело с объектом класса, а просто хотите получить результат.Это вы можете сделать так:

class bread:

    def __init__(self, grain, cost, number):

        self.grain = (grain)
        self.cost = int(cost)
        self.number = int(number)

        return self.price()

    def price(self):
        p = self.cost * self.number
        print("%s : %d" % (self.grain, p))

bread("wholemeal", 2, 12)

Как новичок, вам не следует слишком сильно беспокоиться о таких вещах, как property, но старайтесь делать это как можно более простым (и многословным).Кроме того, поскольку вы делаете ввод для типа зерна, я предполагаю, что вы хотите распечатать это вместе со значением.

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

  • обратите внимание на интервал между функциями
  • отметьте интервал между отдельными элементами
  • обратите внимание, как вывод выводится с помощью print ()

Как только все это будет сделано, все, что нам нужно сделать, это сделать вызов, который в противном случае мы должны были бы делать сами каждый раз, внутри__init__.Удачи, и получайте удовольствие от изучения Python!

0 голосов
/ 27 мая 2018

Когда вы печатаете функцию в конце, вам действительно нужно вызвать функцию.В настоящее время вы просто получаете экземпляр метода внутри объекта.Но вы должны использовать функцию круглых скобок () для вызова функции при ее печати.Вам также не нужно печатать вызов функции, чтобы получить 24, так как вы уже печатаете вывод числа и стоимости в вашей функции.Но если вы хотите напечатать функцию, вы можете использовать возвращаемое значение внутри вашей функции.Вот пример ниже:

class bread(object):

   def __init__(self, grain, cost, number):
      self.grain = grain
      self.cost = cost
      self.number = number

   def price(self):
      price = self.cost * self.number
      return price

apple=bread("wholemeal", 2, 12)

print(apple.price())

Обратите внимание, что в конце кода мы фактически вызывали функцию () при ее печати.Затем вы напечатаете возвращаемое значение функции.Если вы хотите просто напечатать значение внутри функции, вы можете вызвать функцию в нижней части кода, не печатая ее следующим образом:

apple.price()

, а затем выбрать размещение оператора print в методе цены.,Ваш вывод из кода над ним 24:

24
0 голосов
/ 27 мая 2018

Вам необходимо вызвать price:

apple.price()

Однако, поведение переменной атрибута с помощью методов может быть достигнуто с помощью property:

class bread:
   def __init__(self,grain,cost,number):
    self.grain=grain
    self.cost=cost
    self.number=number
   @property
   def price(self):
     return self.cost*self.number

 apple=bread("wholemeal",2, 12)
 print(apple.price)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...