<div>__setattr__ it&#39;s not a *CLR*-level instance method of the type. IronPython just makes it look like it is.<br></div>
<div>One possibility is to simply create an entirely new Parcel from scratch, assigning values as appropriate. For example, given the following C# classes:</div>
<div> </div>
<div>public struct Point {<br>    public int x, y;<br>}</div>
<div>public class Line {<br>    public Point to, from;<br>}</div>
<div> </div>
<div>You can do this from Python:</div>
<div> </div>
<div>F:\tcwb\libs&gt;ipy.exe<br>IronPython 2.6 Beta 2 (2.6.0.20) on .NET 2.0.50727.4927<br>Type &quot;help&quot;, &quot;copyright&quot;, &quot;credits&quot; or &quot;license&quot; for more information.<br>&gt;&gt;&gt; import clr<br>
&gt;&gt;&gt; clr.AddReference(&#39;x&#39;)<br>&gt;&gt;&gt; import Point, Line<br>&gt;&gt;&gt; l = Line()<br>&gt;&gt;&gt; l.to.x<br>0</div>
<div>&gt;&gt;&gt; l.to.x = 1<br>Traceback (most recent call last):<br>  File &quot;&lt;stdin&gt;&quot;, line 1, in &lt;module&gt;<br>ValueError: cannot assign to value types<br>&gt;&gt;&gt; <a href="http://l.to">l.to</a> = Point(x = 1, y = 2)<br>
&gt;&gt;&gt; l.to.x<br>1<br>&gt;&gt;&gt;</div>
<div> </div>
<div class="gmail_quote">On Fri, Aug 7, 2009 at 8:40 PM, Count László de Almásy <span dir="ltr">&lt;<a href="mailto:calmasy@gmail.com">calmasy@gmail.com</a>&gt;</span> wrote:<br>
<blockquote style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_quote">i&#39;m really stuck trying to change values for an object of type<br>&#39;Parcel&#39;, which comes from the openmetaverse library i&#39;m using. how<br>
this library is implemented i don&#39;t have control over, but the given<br>interface is to make local changes to these Parcel objects, then use<br>its Update() method to commit the changes. but it seems in IronPython<br>
i can&#39;t change these objects.<br><br>&gt;&gt;&gt; type(props)<br>&lt;type &#39;Parcel&#39;&gt;<br><br>&gt;&gt;&gt; props.Name = &quot;Yes&quot;<br>Traceback (most recent call last):<br> File &quot;&lt;stdin&gt;&quot;, line 1, in &lt;module&gt;<br>
ValueError: cannot assign to value types<br><br>after hours of struggling, i found<br><a href="http://ironpython.codeplex.com/Wiki/View.aspx?title=Value%20Types" target="_blank">http://ironpython.codeplex.com/Wiki/View.aspx?title=Value%20Types</a><br>
which seems to explain why i&#39;m being bit here. bit it also says<br>&quot;updates are still possible via instance methods on the value type<br>itself.&quot; so isn&#39;t &quot;__setattr__&quot; an instance method? seems i&#39;m not able<br>
to use that either:<br><br>&gt;&gt;&gt; props.__setattr__(&quot;Name&quot;, &quot;Yes&quot;)<br>Traceback (most recent call last):<br> File &quot;&lt;stdin&gt;&quot;, line 1, in &lt;module&gt;<br>ValueError: Attempt to update field &#39;Name&#39; on value type &#39;Parcel&#39;;<br>
value type fields cannot be directly modified<br><br>ok, so what are my options? how do i get around this? i *have* to be<br>able to update objects of this type somehow.<br><br>i can create a new object of that type, but the constructor doesn&#39;t<br>
allow me to pre-stock it with values ( since i guess it assumes i&#39;ll<br>be able to change them later), and then of course once it&#39;s created i<br>can&#39;t change anything.<br><font color="#888888"><br>--<br>Cheers, László<br>
_______________________________________________<br>Users mailing list<br><a href="mailto:Users@lists.ironpython.com">Users@lists.ironpython.com</a><br><a href="http://lists.ironpython.com/listinfo.cgi/users-ironpython.com" target="_blank">http://lists.ironpython.com/listinfo.cgi/users-ironpython.com</a><br>
</font></blockquote></div><br>