Циклический импорт и подклассы в Python - PullRequest
0 голосов
/ 03 ноября 2018

Относительно новый для Python здесь. Я получал ошибки для циклического импорта, поэтому я изменил все свои операторы импорта на import *module name*

Я хочу сделать что-то вроде этого (ниже будет module2):

import module1

class Subclass(Superclass)
    # some code

, где Суперкласс определен в modeule1, а Подкласс наследуется от Суперкласса.

Я получаю ошибку, что Суперкласс не определен. Я тоже пробовал с class Subclass(module1.Superclass), но не могу понять, как заставить его работать. Спасибо!

1 Ответ

0 голосов
/ 03 ноября 2018

Вы можете сделать одно из следующих действий:

import module1

class Subclass(module1.Superclass):
    pass
    #some code

Или:

from module1 import Superclass

class Subclass(Superclass):
    pass
    #some code

Python должен либо знать 1) пространство имен, через которое он может получить доступ к классу, либо 2) явно импортировать класс.

Для ясности module1 может выглядеть следующим образом:

class Superclass:
    pass
    #some code

Пример

Для module1.py:

class Superclass:

    def __init__(self):
        pass

    def a(self):
        print('a')

    def b(self):
        print('b')

А потом module2.py:

from module1 import Superclass

class Subclass(Superclass):
    pass

x = Subclass().a()

Запуск module2.py вернет:

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