0

I have got the following python script:

import enum

class ContactDetail():
    def __init__(self, name=None, telecom=[]):
        self.name = name
        self.telecom = telecom

    class ContactPoint():
        def __init__(self, system=None, value=None, use=None, rank=None, period_start=None, period_end=None):
            self.system = system # ContactPointSystem
            self.value = value

        class ContactPointSystem(enum.Enum):
            email = "email"
            url = "url"

oneConDet = ContactDetail()
oneConDet.name = 'test01'
oneConPoi = ContactDetail.ContactPoint()
oneConPoi.value = "url01"
oneConPoi.system = ContactDetail.ContactPoint.ContactPointSystem.url
oneConDet.telecom.append(oneConPoi)

print(len(oneConDet.telecom))

oneConDet = ContactDetail()
oneConDet.name = 'test02'
oneConPoi = ContactDetail.ContactPoint()
oneConPoi.value = "url02"
oneConPoi.system = ContactDetail.ContactPoint.ContactPointSystem.url
oneConDet.telecom.append(oneConPoi)

print(len(oneConDet.telecom))

Now when executing the script the first print results in 1. However, the second print prints 2.

I would expect the second print to be 1. Where is my mistake?

gabriel
  • 347
  • 3
  • 18
  • 4
    Does this answer your question? ["Least Astonishment" and the Mutable Default Argument](https://stackoverflow.com/questions/1132941/least-astonishment-and-the-mutable-default-argument) – matszwecja Sep 14 '22 at 09:02

0 Answers0