Я пытался выяснить, почему импорт методов из класса из другого файла не будет работать для меня.
Я сделал упрощенную версию, где, в конце концов, я хочу напечатать цифры от 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" вообще, и я все еще не могу заставить его работать.
Вы должны ретроспектировать свою цель. Если вы хотите использовать ООП, вы должны получить объект вместо использования класса.
Ваш основной код должен выглядеть так:
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 другое имя, потому что это может привести к большему количеству ошибок, которые вы не можете сделать.
try
без,except
или,finally