Почему импорт методов из класса из другого файла не будет работать для меня?

1

Я пытался выяснить, почему импорт методов из класса из другого файла не будет работать для меня.

Я сделал упрощенную версию, где, в конце концов, я хочу напечатать цифры от 0 до 9 с задержкой в 1 секунду. Вместо этого ничего не происходит. У меня есть три файла: print.py, generate.py и main.py (основной код, который я запускаю). generate.py вызывает метод из класса в print.py и main.py вызывает метод из класса в generate.py

В print.py у меня есть

import time
class printer(object):
    def __init__(self):
        pass
    def printStuff(n):
        print(n)

В файле generate.py у меня есть

from print import printer
class generator(printer):
    def __init__(self):
        pass
    binaryNumbers =[
        int('11111100', 2),
        int('01100000', 2),
        int('11011010', 2),
        int('11110010', 2),
        int('01100110', 2),
        int('10110110', 2),
        int('10111110', 2),
        int('11100000', 2),
        int('11111110', 2),
        int('11110110', 2) ]
    def displayNum(n):
        number=binaryNumbers[n]
        printer.printStuff(number)

В main.py у меня есть

import time
from generate import generator
def countUp():
    for n in range(10):
        generator.displayNum(n)
        time.sleep(1)
try:
    while 1:
        countUp()

Кто-нибудь видит синтаксическую ошибку, которую мне не хватает? Спасибо.

Я использую repl для запуска кода. Я не получаю сообщение об ошибке. Скорее, ничего не происходит, и он ждет, когда я запустим еще один фрагмент кода. Я также попытался добавить исключение Keyboard Interrupt: и избавиться от "try-except" вообще, и я все еще не могу заставить его работать.

  • 0
    Не могли бы вы добавить точное сообщение об ошибке, которое вы получаете?
  • 0
    У вас есть try без, except или, finally
Показать ещё 1 комментарий
Теги:
class
python-3.x
methods
inheritance

1 ответ

0
Лучший ответ

Вы должны ретроспектировать свою цель. Если вы хотите использовать ООП, вы должны получить объект вместо использования класса.
Ваш основной код должен выглядеть так:

import time
import logging

from generate import generator


def countUp():
    for n in range(10):
        g = generator()
        g.displayNum(n)
        time.sleep(1)


if __name__ == '__main__':
    try:
        while 1:
            countUp()
    except Exception as e:
        logging.exception(e)

print.py вот так:

import time


class printer(object):
    def __init__(self):
        pass
    # I thought you want to add a instance method, so I add 'self'
    def printStuff(self, n):
        print(n)

и generate.py, как это:

from print import printer


class generator(printer):
    def __init__(self):
        pass
    binaryNumbers = [
        int('11111100', 2),
        int('01100000', 2),
        int('11011010', 2),
        int('11110010', 2),
        int('01100110', 2),
        int('10110110', 2),
        int('10111110', 2),
        int('11100000', 2),
        int('11111110', 2),
        int('11110110', 2)]

    # I thought you want to add a instance method, so I add 'self'
    def displayNum(self, n):
        number = self.binaryNumbers[n]
        p = printer()
        p.printStuff(number)

Хотя вы можете запустить этот код, я предлагаю переименовать print.py другое имя, потому что это может привести к большему количеству ошибок, которые вы не можете сделать.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню