Как передать аргументы в дочерний класс - PullRequest
0 голосов
/ 15 апреля 2020

В основном я хочу иметь 4 класса, в которых я хочу выбрать каждый из четырех классов случайным образом в соответствии с генератором случайных чисел. Родительский класс имеет все функции, и я хочу иметь возможность иметь 3 других дочерних класса, та же функция, что и у родительского класса

class Job:
    ......(all the code over here)....

class Job2(Job):
    pass
class Job3(Job):
    pass
class Job4(Job):
    pass 

for i in range 4:  
    a=randint(0,4)
    if a==1:
        Job
    if a==2:
        Job2
    if a==3:
        Job3
    if a==4:
        Job4

Весь смысл в том, чтобы уменьшить «время ожидания» (это, в основном, симуляция FIFO) на четверть. Я подумал, что, выполняя случайное и повторяя его 4 раза, он будет go по заданиям 4 раза в итерации

Как мне вызвать Job в функции?

1 Ответ

0 голосов
/ 15 апреля 2020

Может быть уточнено, но основные идеи заключаются в том, что когда вы реализуете __call__ как метод класса, экземпляр объекта может быть вызван как функция.

(jobs[a]() создает экземпляр задания , а затем вы вызываете результат этой операции как функцию).

from random import randint

class Job:
    def __init__(self, id=0):
        self.id = id

    def __call__(self):
        print(self.id)

class Job1(Job):
    def __init__(self):
        self.id = 1

class Job2(Job):
    def __init__(self):
        self.id = 2

class Job3(Job):
    def __init__(self):
        self.id = 3

a=randint(0, 3)
jobs = [Job, Job1, Job2, Job3]
job = jobs[a]()

job()
...