Welwei
Welwei

Reputation: 21

Is there a way to dynamically sort variables into classes?

I have these two Classes: "Employee" - the superclass and "Salesman" - a subclasss of "Employee".

And I have eric = ('Eric', 19, 'Salesman', 1700).

Can i use a function to check if Eric is a Salesman and dynamically assign him to either the "Employee" superclass or the "Salesman" subclass?

And how should I go about writing that?

I hope, my description of the problem wasn't too confusing.

class Employee():
    '''the employee superclass'''
    def __init__(self, name, age, occupation, monthly_pay):
        self.isemployee = True
        self.name       = name
        self.age        = age
        self.occ        = occupation
        self.pay        = monthly_pay

class Salesman(Employee):
    '''the Salesman subclass'''
    def __init__(self):
        self.issalesman = True

Upvotes: 0

Views: 30

Answers (1)

Welwei
Welwei

Reputation: 21

After some trial and error, and rewriting, this is what I came up with:

class Employee():
    '''The employee superclass'''
    def __init__(self, name, age, occupation, monthly_pay):
        self.name       = name
        self.age        = age
        self.occ        = occupation
        self.pay        = monthly_pay

class Salesman(Employee):
    '''The Salesman subclass'''
    def issalesman(self):
        self.issalesman = True

def class_assigner(person):
    if person[2] == 'Salesman':
        person = Salesman(person[0], person[1], person[2], person[3])
    else:
        person = Employee(person[0], person[1], person[2], person[3])
    return person


print(class_assigner(eric).occ)

Output:

Salesman

Is this a viable method, or will i run into problems later, if I, say for example start importing employee - data from a .txt or .csv file?

Upvotes: 1

Related Questions