Обратите внимание, что ваш класс First
на самом деле не имеет a sched
экземпляра;он, конечно, не имеет доступа к sched.sched
экземпляру Scheduler
, которым вы вероятно хотите манипулировать.
class First():
def __init__(self):
self.remove_job=None
def go(self):
self.remove_job('test')
Возможно, вам следует сначала создать объект Sched
, так что вы можете передать его конструктору First()
, чтобы вы могли вызывать его.Я набросаю непроверенный механизм, который, я думаю, решил бы это:
class First():
def __init__(self, sched):
self.sched = sched
def go(self):
self.sched.remove_job('test')
def main():
sched = Sched()
first = First(sched)
sched.sched.start()
time.sleep(5)
first.go()
return 0
Это позволяет сохранить класс Sched
в одиночестве - возможно, более чистый дизайн можно было бы найти, объединив First
и Sched
- тот факт, что First
знает название задания, которым управляет Sched
, является признаком того, что что-то не так.
Возможно, сделайте шаг назад и объясните, в чем проблематы пытаешься решить?Это не самое чистое решение, поэтому мне интересно, можно ли решить возникшую проблему с помощью лучшего механизма.