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

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

Я сделал упрощенную версию, где, в конце концов, я хочу напечатать числа от 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 для запуска кода.Я не получаю сообщение об ошибке.Скорее ничего не происходит, и я жду, чтобы запустить еще один кусок кода.Я также попытался добавить исключение «Исключение клавиатуры»: и вообще избавиться от «попробовать-кроме», и я все еще не могу заставить его работать.

1 Ответ

0 голосов
/ 14 октября 2018

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

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 в другое имя, потому что это может привести к большему количеству ошибок, которые вы не можете отобразить.

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