updated from Atlas
This commit is contained in:
52
11-pythonic-obj/slots.rst
Normal file
52
11-pythonic-obj/slots.rst
Normal file
@@ -0,0 +1,52 @@
|
||||
# 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[]
|
||||
Reference in New Issue
Block a user