2016-04-08 5 views
0

я три класса разделены, как показано ниже:Python: Результат Оценка по классам?

file1.py

class one(): 
    def __init__(self): 
     self.x = 1 
     self.y = 3 
     self.h = self.x + self.y 

file2.py

from file1 import * 
class two(): 
    def __init__(self,coming): 
     self.get = coming.h+1 

file3.py
from file1 import * 
from file2 import * 
class three(): 
    def __init__(self,f1,f2): 
     self.v1 = f1.h 
     self.v2 = f2.get 
     print(self.v1) 
     print(self.v2) 

k = three(two(one())) 

Всякий раз, когда я должен запустить file3 .py Мне нужно, чтобы результат выглядел следующим образом:

> 4 
> 5 

но мой код дают, что file2 не возвращает никакого значения, то здесь моя ошибка:

~#python file3.py

Traceback (most recent call last): 
    File "file3.py", line 10, in <module> 
    k = three(two(one())) 
TypeError: __init__() takes exactly 3 arguments (2 given) 
+0

Ваш класс 'three' ожидает, что вы поставите два аргумента (третий -' self', который передается автоматически). – zondo

ответ

0

Проблема состоит в том, что три получить 2 аргумента вместо 3. Вы можете изменить последняя строка в file3 на:

k = three(one(), two(one())) 

или разработать код иначе

+0

Я пытаюсь заказать такие классы, как я сказал мне, но я получаю проблему в атрибуте в каком-то экземпляре: ошибка, которую я получил, когда я использовал 'k = три (два (один()), один())' ==> 'Traceback (самый последний вызов последнего): Файл "file3.py", строка 10, в к = три (два (один()), один()) Файл "file3.py", линия 5, в __init__ self.v1 = f1.h AttributeError: два экземпляра не имеет атрибута «h'' –

+1

вы правы, поменять местами аргументы –

+0

могли бы вы предоставить мне пример кода, который показывает, как должен быть таким типом значений класса прохождения с встретить? –