<br><br><div><span class="gmail_quote">On 11/29/06, <b class="gmail_sendername">Talin</b> &lt;<a href="mailto:talin@acm.org">talin@acm.org</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Guido van Rossum wrote:<br>&gt; Have you thought much about the issue of different signature? The<br>&gt; regular method table only has functions taking one or more objects and<br>&gt; returning an object. (There are a few flags to indicate variations on
<br>&gt; the call args.) The special slots have all sorts of other signatures,<br>&gt; some returning int, some returning void, some taking ints or C<br>&gt; strings, etc. (And changing this would be a huge inefficiency in some
<br>&gt; cases.)<br>&gt;<br>&gt; Not using some variant of C (or C99) struct initialization means more<br>&gt; chance for undetected errors since you will necessarily have to cast<br>&gt; everything to a standard type and then the compiler can't type-check
<br>&gt; that the function signature matches the slot's needs.<br><br>Yes, there will be some loss of type safety. I'm not sure what to say<br>about that. (Although, there is one benefit that you will at least be<br>able to declare the &quot;self&quot; argument as its concrete type, rather than as
<br>PyObject *.)</blockquote><div><br>I must be missing something, why is this any different than what you can do now?&nbsp; You either define the function with the exact call signature as typed for the struct field, or you define how you want the arguments to be treated and you cast to the call signature that is expected for the struct field.
<br></div><br>-Brett<br></div><br>