Change in pysim[master]: pySim/filesystem: fix mutable default list/dict arguments

fixeria gerrit-no-reply at lists.osmocom.org
Sat Mar 27 00:34:56 UTC 2021


fixeria has uploaded this change for review. ( https://gerrit.osmocom.org/c/pysim/+/23513 )


Change subject: pySim/filesystem: fix mutable default list/dict arguments
......................................................................

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 instanuated 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
---
M pySim/filesystem.py
1 file changed, 8 insertions(+), 8 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/13/23513/1

diff --git a/pySim/filesystem.py b/pySim/filesystem.py
index f6dddb6..ba94d8f 100644
--- a/pySim/filesystem.py
+++ b/pySim/filesystem.py
@@ -684,10 +684,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)
@@ -701,13 +701,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

-- 
To view, visit https://gerrit.osmocom.org/c/pysim/+/23513
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: I83d718ff9c3ff6aef47930f38d7f50424f9b880f
Gerrit-Change-Number: 23513
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <vyanitskiy at sysmocom.de>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20210327/8a7df0d3/attachment.htm>


More information about the gerrit-log mailing list