Hacker News new | ask | show | jobs
by deno 5638 days ago
I'm not sure about #2. Is it really that good idea to extend types? Or to be precise — to extend non-abstract classes?

It leads to unintuitive behavior:

    >>> IntField(5, 'abc') is IntField(5, 'abc')
    False
whereas

    >>> int(5) is int(5)
    True
also:

    >>> IntField(5, 'abc') == 5
    True
not to mention:

    >>> IntField(5, 'abcd') == IntField(5, 'xyz')
    True

IMO this would be better, more flexible approach:

    class MyIntField(object):
        @property
        def val(self):
            return self._val

        @property
        def name(self):
            return self._name

        def __init__(self, val, name):
            self._val = val
            self._name = name

        def __eq__(self, other):
	          	return (self.val == other.val) and \
                   (self.name == other.name)