1.5 KiB
1.5 KiB
id, source_exercise_id, title, section, source_path, source_repo, source_commit, student_visible_solution, has_private_solution, skip
| id | source_exercise_id | title | section | source_path | source_repo | source_commit | student_visible_solution | has_private_solution | skip |
|---|---|---|---|---|---|---|---|---|---|
| practical-python-5.8 | 5.8 | Adding slots | 5.2 Classes and Encapsulation | 05_Object_model/02_Classes_encapsulation.md | https://github.com/dabeaz-course/practical-python | 93dca856b41c61a0a0f85ae334116e4c125629ea | false | true | false |
Exercise 5.8: Adding slots
Source: Practical Python Programming,
05_Object_model/02_Classes_encapsulation.md.
Exercise 5.8: Adding slots
Modify the Stock class so that it has a __slots__ attribute. Then,
verify that new attributes can't be added:
>>> ================================ RESTART ================================
>>> from stock import Stock
>>> s = Stock('GOOG', 100, 490.10)
>>> s.name
'GOOG'
>>> s.blah = 42
... see what happens ...
>>>
When you use __slots__, Python uses a more efficient
internal representation of objects. What happens if you try to
inspect the underlying dictionary of s above?
>>> s.__dict__
... see what happens ...
>>>
It should be noted that __slots__ is most commonly used as an
optimization on classes that serve as data structures. Using slots
will make such programs use far-less memory and run a bit faster.
You should probably avoid __slots__ on most other classes however.
Contents | Previous (5.1 Dictionaries Revisited) | Next (6 Generators)