Полиморфизм Python3: кто-нибудь еще получает ошибку NameE в главе 14 «Введение в вычисления и программирование с использованием Python 2ed» Джона Гуттага? - PullRequest
0 голосов
/ 12 января 2019

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

Этот пример призван показать, как использовать классы и полиморфизм в контексте двухмерных случайных блужданий. Нижеприведенное будет иметь смысл, только если вы прочитаете код на страницах книги с 219 по 222 и поймете, что он пытается сделать. Я закодировал исходный код модели; продолжал получать ту же ошибку, поэтому скачал исходный код сайта и получил ту же ошибку. Ошибка возникает, когда Guttag определяет функции, которые принимают аргументы (которые кажутся неявно типа «класс»), называемые dClass. Код модели затем вызывает эти функции, передавая аргумент UsualDrunk (а затем и другие подклассы), который является определенным подклассом класса Drunk. Я вижу, как это должно работать: но при запуске ipython 7.2.0 или python 3.5.2 я получаю NameError: имя UsualDrunk не определено. Мне интересно, если я делаю что-то не так или моя версия Python несовместима с исходным кодом. Ubuntu Linux ввод / вывод:

$ ls
chapter14.py
$ ipython
Python 3.5.2 (default, Nov 12 2018, 13:43:14) 
Type 'copyright', 'credits' or 'license' for more information
IPython 7.2.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: import chapter14                                                        

In [2]: chapter14.drunkTest((10,100,1000),1000,UsualDrunk)                      
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-2-90a872f15ce9> in <module>
----> 1 chapter14.drunkTest((10,100,1000),1000,UsualDrunk)

NameError: name 'UsualDrunk' is not defined

Веб-страница книги, на которой указан исходный код: https://mitpress.mit.edu/books/introduction-computation-and-programming-using-python-revised-and-expanded-edition

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...