Bottom Page

Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Unexpected expected type error result
# creating a new kind of class or instance attribute

class Integer:
    def __init__(self, name): = name

    def __get__(self, instance, cls):
        if instance is None:
            return self
            return instance.__dict__[]

    def __set__(self, instance, value):
        if not isinstance(value, int):
            raise TypeError('expected an int')
        instance.__dict__[] = value

    def __delete__(self, instance):
        del instance.__dict__[self]

class Point:
    x = Integer('x')
    y = Integer('y')
    def __init__(self, x, y):
        self.x = x
        self.y = y

p = Point(12, 3)
my_int = Integer(1)
print('myint:   {}   {}'.format(my_int,
print('{}   {}'.format(p.x, p.y))

my_int2 = Integer('1')
print('myint2:  {}   {}'.format(my_int2,
# p2 = Point('1', 3)
my_int2 = Integer('1')
does not produce the expected type error
while uncommenting p2 does raise the expected error
TypeError: expected an int
I wasn't familiar before with these magic methods but here's what I learned...

You've constructed Integer such that in Point, when self.x and self.y are assigned (or "__set__"), that the TypeError-raising code gets called. Merely constructing an integer directly only invokes its initializer, not its __set__ method. So this code appears to be working as it ought to. (I'm not as sure about __get__ or __delete__, but that's not what your question seems to be about.)

Top Page

Possibly Related Threads...
Thread Author Replies Views Last Post
  syntax error near unexpected token btom529 5 107 Apr-21-2019, 09:03 PM
Last Post: btom529
  Getting error "Type error-a bytes-like object..." mrapple2020 1 122 Apr-06-2019, 06:37 PM
Last Post: mrapple2020
  Getting an unexpected generator object ? mcgrim 19 302 Mar-29-2019, 11:35 AM
Last Post: gontajones
  scatter plot error - possibly data type - TypeError: nan is not a string chudson 1 122 Mar-24-2019, 11:48 AM
Last Post: chudson
  Force calculation result as decimal vercetty92 4 134 Mar-20-2019, 02:27 PM
Last Post: vercetty92
  Dictionary adds an unexpected list erina 1 137 Mar-14-2019, 01:13 PM
Last Post: ichabod801
  unexpected EOF while parsing whatloop 3 178 Mar-09-2019, 06:59 PM
Last Post: whatloop
  test pattern and add result in a table sam1975 1 108 Mar-05-2019, 02:41 PM
Last Post: sam1975
  My code is taking longer time to give result rajeshwin 4 138 Feb-20-2019, 08:18 PM
Last Post: ichabod801
  Unexpected round behavior pythonCoder 1 115 Feb-19-2019, 02:39 PM
Last Post: marienbad

Forum Jump:

Users browsing this thread: 1 Guest(s)