i am currently working on a producion optimization tool. There are Jobs who needs to be produced on machines.
I want to add a workspeed for the machines so they can finish the jobs in a different speed depending on the machine it is processed on.
This is the class and list i am using for the machines:
number_of_machines = 3
class Machine(object):
def __init__(self, workload, workspeed):
self.workload = workload
self.workspeed = workspeed
all_machines =[]
for i in range(number_of_machines):
all_machines.append(Machine(0)) #puts the workload of all machines to 0 before the loop starts
i want to add a different float(for example 0.5 , 1.0 , 1.5) to each object in the list “all_machines”
Help would be very much appreciated!
Thanks in advance!
Advertisement
Answer
If you want workload to always have an initial value of 0 just define it in the class and remove the parameter from the __init__
class Machine(object):
workload = 0
def __init__(self, workspeed):
self.workspeed = workspeed
If you want to keep __init__ with those two parameters you can use default value (notice the order of the parameters is reversed)
class Machine(object):
def __init__(self, workspeed, workload=0):
self.workload = workload
self.workspeed = workspeed
For both options
all_machines = [Machine(0.5), Machine(1.0), Machine(1.5)]
for machine in all_machines:
print(f'{machine.workload} {machine.workspeed}')
# output:
# 0, 0.5
# 0, 1.0
# 0, 1.5