I have try to append a List of Classes inside another List of Classes as the code below.
class Power:
def __init__(power, name='VDD', value='1.8'):
| power.name = name
| power.value = value
class Condition:
def __init__(condition, name='TYP', power=[]):
| condition.name = name
| condition.power = power
def addpower(condition, power, value):
| condition.power.append( Power( name=power, value=value ) )
class WorkingCell:
def __init__(cell, name='name', cond=[]):
| cell.name = name
| cell.cond = cond
def setpower(cell, cond, power, value):
| for x in cell.cond:
| ¦ if( x.name == cond ):
| ¦ ┆ x.addpower( power=power, value=value )
| ¦ ┆ break
I added two conditions into cell as below.
cell.cond.append( Condition( name='FAST' ) )
cell.cond.append( Condition( name='SLOW' ) )
Afterward, I appended two Power class's elements into seperate condition, according to condition name.
cell.setpower( cond='FAST', power='VDD', value='0.9' )
cell.setpower( cond='FAST', power='VCCQ', value='1.9' )
cell.setpower( cond='SLOW', power='VDD', value='0.65' )
cell.setpower( cond='SLOW', power='VCCQ', value='1.65' )
As a result, it was appended all that powers into two conditions as well (I formatted print-out result by myself for easier debugging).
{name : 'cell_1',
cond : {name : 'FAST', power : {name : 'VDD', value : '0,9'
name : 'VCCQ', value : '1.9'
name : 'VDD', value : '0.65'
name : 'VCCQ', value : '1.65'}
name : 'SLOW', power : {name : 'VDD', value : '0,9'
name : 'VCCQ', value : '1.9'
name : 'VDD', value : '0.65'
name : 'VCCQ', value : '1.65'}
}
}
Then, I checked it by address where all that Power objects were storing. Surprisingly, all of that powers of two individual conditions were stored at the same address.
{name : 'cell_1',
cond : {name : 'FAST', power : {<__main__.Power object at 0x2b0d6d906c88>
<__main__.Power object at 0x2b0d6d906d68>
<__main__.Power object at 0x2b0d6d906da0>
<__main__.Power object at 0x2b0d6d906e10>}
name : 'SLOW', power : {<__main__.Power object at 0x2b0d6d906c88>
<__main__.Power object at 0x2b0d6d906d68>
<__main__.Power object at 0x2b0d6d906da0>
<__main__.Power object at 0x2b0d6d906e10>}
}
}
I am wondering that why I already accessed to individual conditions according to their own names, but it still appended Power objects into both conditions.
EDIT: As Aagam Sheth, I missed explaining my expected output. Hence, the description below is one.
{name : 'cell_1',
cond : {name : 'FAST', power : {name : 'VDD', value : '0,9'
name : 'VCCQ', value : '1.9'}
name : 'SLOW', power : {name : 'VDD', value : '0.65'
name : 'VCCQ', value : '1.65'}
}
}