Am 08.11.2012 21:29, schrieb Terry Reedy:
On Thu, Nov 8, 2012 at 8:55 AM, Ulrich Eckhardt
<ulrich.eckha...@dominolaser.com> wrote:
On 3.3, it gives me a "TypeError: object.__init__() takes no
parameters". To some extent, this makes sense to me, because the
int subobject is not initialized in __init__ but in __new__. As a
workaround, I can simple drop the parameter from the call.

Just drop the do-nothing call.

Wait: Which call exactly?

Do you suggest that I shouldn't override __init__? The problem is that I need to attach additional info to the int and that I just pass this to the class on contstruction.

Or, do you suggest I don't call super().__init__()? That would seem unclean to me.

Just for your info, the class mimics a C enumeration, roughly it looks like this:

  class Foo(int):
      def __init__(self, value, name):
          super(Foo, self).__init__(value)
          self.name = name

      def __str__(self):
          return self.name

  Foo.AVALUE = Foo(1, 'AVALUE')
  Foo.BVALUE = Foo(2, 'BVALUE')

Note that even though I derive from an immutable class, the resulting class is not formally immutable. Maybe exactly that is the thing that the developers did not want me to do? I didn't understand all the implications in the bug ticket you quoted, to be honest.

Thank you for your time!

Uli
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to