Slots
Internally, Python uses the dict
data type to store an object’s instance attributes. This allows easy definition of new attributes at runtime, but consumes a lot of memory for the convenience.
class Employee(object):
def __init__(self, start_date, salary):
self.start_date = start_date
self.salary = salary
self.calculate_payment()
To increase performance, it is possible to use the __slots__
feature. This will circumvent the use of a dict
and only allocate space for a fixed set of attributes.
class Employee(object):
__slots__ = ["start_date", "salary"]
def __init__(self, start_date, salary):
self.start_date = start_date
self.salary = salary
self.calculate_payment()