2016-10-28 4 views
-1
class Items(): 
    def Bucket(self): 
     self.cost(5) 

print(Items.Bucket()) # I want this to return the cost of the item 

Я хочу, чтобы это напечатало стоимость перечисленного товара. В этом случае ведро, которое я хочу, чтобы оно вернулось 5. В настоящее время оно возвращается ...Как сделать запрос def вернуть объект внутри себя (...)

TypeError: Bucket() missing 1 required positional argument: 'self' 

Любые предложения?

+1

'Items() Ковш())'.. Вы должны сначала создать свои «Элементы». Или переопределите 'Bucket' для' def Bucket(): '. – Evert

+1

Примечание: ваше ведро ничего не вернет, так как нет инструкции 'return'. – Evert

+0

Спасибо, что дала мне представление. –

ответ

2

Причина, почему вы получаете эту ошибку, потому что ваш метод Bucket определяется как экземпляра метод, и вы пытаетесь назвать это как метод класса.

Предлагаю вам прочитать this здесь о различии между методами класса и методами экземпляра. Который также объяснит, как сам играет здесь роль.

Чтобы сделать экземпляр Items, вам нужно вызова это:

items_obj = Items() 

Теперь у вас есть экземпляр Items класса, и теперь может правильно назвать ваш метод Bucket:

items_obj.Bucket() 

Похоже, вы уже вызываете метод внутри своего метода Bucket под названием cost. Таким образом, при условии, что этот метод просто возвращает стоимость, то просто возвращение вызова self.cost(5) в вашем Bucket метод:

def Bucket(self): 
    return self.cost(5) 

Итак, вы должны иметь в качестве окончательного решения:

class Items: 
    def Bucket(self): 
     return self.cost(5) 

items_obj = Items() 
print(items_obj.Bucket()) 

Примечание: Вы не При определении вашего класса необходимо иметь (). Предполагая, что вы используете Python 3, вы можете просто определить свой класс как: class Items:, как указано выше.

Кроме того, было бы хорошо, чтобы соответствовать хорошей практике стиля в вашем коде, принимая взглянуть на стиль-гид здесь: https://www.python.org/dev/peps/pep-0008/

+0

Спасибо, это действительно помогает –

0

Попробуйте это:

class Items(): 
    def __init__(self,cost): 
     self.cost = cost 
    def bucket(self): 
     return self.cost 

items = Items(5) 
print(items.bucket())