I'm trying to work on a simple class that fills in some lists and then tries to retrieve that information back, something like:
class Foo(object):
def __init__(self):
self.src = []
self.values = []
def addItems(self, name, val):
self.src.append(name)
self.values.append(val)
def getItem(self, item):
for i, x in enumerate(self.src):
if x == item:
return self.src[i], self.values[i]
To use this class, I first have to instanciate it, Foo()
, and only then start adding and retrieving objects.
a = Foo()
a.addItems('A', '1')
a.addItems('B', '2')
a.src # ['A', 'B']
a.values # ['1', '2']
a.getItem('A') # ('A', '1')
Is there any way to add the elements without having to initialise the class first? Something like Foo.addItems('A', '1')
(this gives a TypeError: addItems() missing 1 required positional argument: 'val'
).
I saw other related posts using @staticmethod
, but couldn't figure out how to make it work in this example.