NameError создает экземпляр импортируемого класса - PullRequest
0 голосов
/ 21 октября 2019

У меня есть подкласс Course класса следующим образом:

# course.py
class Course:
    """Represent a single Course"""
    kind = 'Gen Ed'
    def __init__(self, name, number) :
        self._name = name # 'private' instance variable\
        self._number = number
        self.__display()
    def display(self):
        print(self.kind,"Course:" , self._name, self._number, sep=" ")
    __display = display # private copy


class CSCourse(Course):
    """Represent a single CS Course"""
    kind = 'CS' # class variable shared by all CSCourses
    def __init__(self, name, number, language, numberOfPrograms):
        Course.__init__(self, name,  number)
        self._language = language
        self._numberOfPrograms = numberOfPrograms
    def display(self):
        Course.display(self)
        print('Language', self._language,
         'Number Of programs:', self._numberOfPrograms, sep = ' ')

Я импортирую модуль следующим образом:

>>>from course import *

Это не вызывает никаких исключений, но тогда, когда явведите следующее, чтобы вызвать конструктор, я получаю ошибку ниже?

>>> cs360=CSCourse("Special Topics", 360, "python", 21)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'CSCourse' is not defined

Что я делаю не так, пожалуйста? Я также попытался увидеть, какие методы доступны в импортируемых классах. Кажется, ничего не импортируется!

>>> import inspect
>>> inspect.getmembers(Course, lambda a:not(inspect.isroutine(a)))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'Course' is not defined
>>> inspect.getmembers(CSCourse, lambda a:not(inspect.isroutine(a)))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'CSCourse' is not defined
...