pySim/filesystem: fix mutable default list/dict arguments
Having lists and dictionaries as default argument values is a bad
idea, because the same instance of list/dict will be used by all
objects instantiated using such constructor:
def appendItem(itemName, itemList=[]):
itemList.append(itemName)
return itemList
print(appendItem('notebook'))
print(appendItem('pencil'))
print(appendItem('eraser'))
Output:
['notebook']
['notebook', 'pencil']
['notebook', 'pencil', 'eraser']
Change-Id: I83d718ff9c3ff6aef47930f38d7f50424f9b880f
diff --git a/pySim/filesystem.py b/pySim/filesystem.py
index a1bb127..04fa250 100644
--- a/pySim/filesystem.py
+++ b/pySim/filesystem.py
@@ -706,10 +706,10 @@
class CardApplication(object):
"""A card application is represented by an ADF (with contained hierarchy) and optionally
some SW definitions."""
- def __init__(self, name, adf=None, sw={}):
+ def __init__(self, name, adf=None, sw=None):
self.name = name
self.adf = adf
- self.sw = sw
+ self.sw = sw or dict()
def __str__(self):
return "APP(%s)" % (self.name)
@@ -723,13 +723,13 @@
"""A Card Profile describes a card, it's filessystem hierarchy, an [initial] list of
applications as well as profile-specific SW and shell commands. Every card has
one card profile, but there may be multiple applications within that profile."""
- def __init__(self, name, desc=None, files_in_mf=[], sw=[], applications=[], shell_cmdsets=[]):
+ def __init__(self, name, **kw):
self.name = name
- self.desc = desc
- self.files_in_mf = files_in_mf
- self.sw = sw
- self.applications = applications
- self.shell_cmdsets = shell_cmdsets
+ self.desc = kw.get("desc", None)
+ self.files_in_mf = kw.get("files_in_mf", [])
+ self.sw = kw.get("sw", [])
+ self.applications = kw.get("applications", [])
+ self.shell_cmdsets = kw.get("shell_cmdsets", [])
def __str__(self):
return self.name