Skip to content

Latest commit

 

History

History
52 lines (47 loc) · 1.07 KB

slots.rst

File metadata and controls

52 lines (47 loc) · 1.07 KB

# tag::PIXEL[] >>> class Pixel: ... __slots__ = ('x', 'y') # <1> ... >>> p = Pixel() # <2> >>> p.__dict__ # <3> Traceback (most recent call last):

...

AttributeError: 'Pixel' object has no attribute '__dict__' >>> p.x = 10 # <4> >>> p.y = 20 >>> p.color = 'red' # <5> Traceback (most recent call last):

...

AttributeError: 'Pixel' object has no attribute 'color'

# end::PIXEL[]

# tag::OPEN_PIXEL[] >>> class OpenPixel(Pixel): # <1> ... pass ... >>> op = OpenPixel() >>> op.__dict__ # <2> {} >>> op.x = 8 # <3> >>> op.__dict__ # <4> {} >>> op.x # <5> 8 >>> op.color = 'green' # <6> >>> op.__dict__ # <7> {'color': 'green'}

# end::OPEN_PIXEL[]

# tag::COLOR_PIXEL[] >>> class ColorPixel(Pixel): ... __slots__ = ('color',) # <1> >>> cp = ColorPixel() >>> cp.__dict__ # <2> Traceback (most recent call last):

...

AttributeError: 'ColorPixel' object has no attribute '__dict__' >>> cp.x = 2 >>> cp.color = 'blue' # <3> >>> cp.flavor = 'banana' Traceback (most recent call last):

...

AttributeError: 'ColorPixel' object has no attribute 'flavor'

# end::COLOR_PIXEL[]