2016-02-09 2 views
0

Я молодой программист на Python, и я изучаю книгу на эту тему из хорошо известной серии книг, посвященных манекенам.Может ли кто-нибудь сказать мне программный поток этого скрипта python 2.7?

В любом случае, один из примеров из книги приведен ниже, и мне нужен кто-то, чтобы рассказать мне, что происходит. Я понимаю, что делают отдельные части скрипта, но логический поток меня путает (например, какие объекты создаются там, где и что вызывает).

I изображение это довольно просто для опытного программиста, но это наводит меня на меня сейчас. Любая помощь приветствуется. Скрипт ниже, и все это делает его 'Red, Green, Blue + Yellow, Purple, Cyan = Red, Green, Blue, Yellow, Purple, Cyan'.

Заранее спасибо. Сценарий от производства:

class MyClass: 
    def __init__(self,*args): 
     self.Input = args 

    def __add__(self,Other): 
     Output = MyClass() 
     Output.Input = self.Input + Other.Input 
     return Output 

    def __str__(self): 
     Output = " " 
     for Item in self.Input: 
      Output += Item 
      Output += " " 
     return Output 


Value1 = MyClass("Red", "Green", "Blue") 
Value2 = MyClass("Yellow", "Purple", "Cyan") 
Value3 = Values1 + Values2 

print("{0}+{1}={2}".format(Value1,Value2,Value3)) 
+0

Я рекомендую использовать отладчик IDLE. Таким образом, вы можете легко следить за каждым шагом, который выполняет интерпретатор, и узнать о потоке управления. См.: (Https://inventwithpython.com/chapter7.html) для учебника. –

+0

Человек, который назвал стиль ужасным и против соглашений Python. Используйте переменную camelCase и используйте только классы. Для большинства программистов 'Output + = Item' означает« добавить класс 'Item' в класс' Output' ', что бы это ни значило. –

ответ

1

Я обычно использует pdb вместо более причудливого отладчика, но это дело вкуса. Это отладчик python по умолчанию, который вы можете выполнить, чтобы выполнить свой код из командной строки.

Чтобы использовать PDB в сценарии, импортировать его в точке, где вы хотите начать пошагового, я думаю, что для этого сценария самое интересное будет в добавить():

def __add__(self,Other): 
     import pdb 
     pdb.set_trace() 
     Output = MyClass() 
     Output.Input = self.Input + Other.Input 
     return Output 

сейчас , если вы запустите скрипт, выполнение остановится в точке, где вы установили трассировку. Вам будет представлена ​​CLI, где вы сможете просмотреть код и распечатать любую интересующую вас информацию.

> print(Output.input) 
> s     # for (s)tep 
> print(Other.input) 
+0

Спасибо, это было действительно полезно =) –

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