2016-11-03 2 views
-2

Я знал, что в этом и не уверен, что точный синтаксис использовать для добавления х, у в питоне, используя это определение классадобавив два значения в классе в питоне

class Add(values): 
    def __init__(self, x, y): 
     values.__init__(self, [x, y]) 

    def forward(self): 

     return self.values[x] + values[1] 

Я не могу понять, как для доступа к x, y для их объединения. Я пробовал все возможности, о которых я могу думать. Спасибо.

+0

Что вы пытаетесь сделать с помощью 'Add'? –

+0

Что такое 'values'? –

+0

Выполнение этого кода дает ошибку 'NameError: name 'values' not defined'. –

ответ

5

Я думаю, что вам нужна функция, а не класс.

def add(x, y): 
    return x+y 

Если вы уверены, что это на самом деле должен быть классом для все, что вы делаете, это может выглядеть следующим образом:

class Add: 
    def __init__(self, x, y): 
     self.x = x 
     self.y = y 

    def forward(self): 
     return x+y 

Тогда

>>>add(5, 6) 
11 
>>>a = Add(5, 6) 
>>>a.forward() 
11 
+0

Мне нужно сохранить код в этом формате, поскольку он является частью более крупного кода и является одним из определений классов. Значения сами по себе являются экземплярами другого класса, поэтому я должен вернуть ему сумму. поэтому, если я просто скажу sef.x = x self.y = y и return x + y, я получу NameError: глобальное имя 'x' не определено – kevbuntu

+0

@kevbuntu Не могли бы вы поделиться кодом для 'values'? Способ, которым мы настраиваем 'Add', действительно зависит от того, как настроено' values'. –

1

я думаю это то, что вам нужно

class Values(): 
    def __init__(self, x = 0, y=0): 
     self.x_value = x 
     self.y_value = y 

class Add(Values): 
    def __init__(self, x = 0, y=0): 
     Values.__init__(self, x, y) 

    def forward(self): 
     return (self.x_value + self.y_value) 

add = Add(x = 20, y=20) 
print (add.forward()) 
+0

Это часть более крупного кода, где сами «значения» являются экземпляром класса. Мне нужно сохранить код в указанном формате – kevbuntu

+0

Если 'values' является экземпляром' type' (или его подкласса), он не входит в список базового класса объявления 'class'. – chepner

2

Чтобы добавить так mething других ответов, я бы сказал, что:

class Add(values): 

означает, что вы создаете класс «Добавить», который наследует от «ценностей» класса. Значения класса 'должны быть определены где-то в другом месте, у вас будет NameError.

Более подробная информация о наследовании здесь: https://docs.python.org/3.6/tutorial/classes.html#inheritance

+0

Я не могу изменить код на что-то еще. Мне в основном нужно иметь значения = x + y в функции forward. Никакого другого разнообразия кода. – kevbuntu

0

На самом деле ответ, который я искал это:

self.x = [0] self.y = [1]

Спасибо за попыток.

Смежные вопросы