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
This commit is contained in:
Vadim Yanitskiy 2021-03-27 01:25:46 +01:00 committed by laforge
parent 24f7bd3ab5
commit 98f872bed1
1 changed files with 8 additions and 8 deletions

View File

@ -706,10 +706,10 @@ def interpret_sw(sw_data, sw):
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 @@ class CardProfile(object):
"""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