Review feedback incorporated:

* capitalize bullet items
* replace bullet asterisks with dashes
* indent bullet code fragments
* join some lines
This commit is contained in:
Tin Tvrtkovic 2016-03-30 22:54:46 +02:00
parent 7818400ce7
commit adb08a187a
1 changed files with 31 additions and 43 deletions

View File

@ -382,11 +382,9 @@ Slots
By default, instances of classes have a dictionary for attribute storage.
This wastes space for objects having very few instance variables.
The space consumption can become acute
when creating large numbers of instances.
The space consumption can become acute when creating large numbers of instances.
Normal Python classes can avoid using a separate dictionary
for each instance of a class by defining ``__slots__``.
Normal Python classes can avoid using a separate dictionary for each instance of a class by defining ``__slots__``.
``attrs`` classes should just use ``slots=True``.
@ -400,22 +398,17 @@ for each instance of a class by defining ``__slots__``.
.. note::
``attrs`` slot classes can inherit from other classes
just like non-slot classes,
but some of the benefits of slot classes are lost if you do that.
If you must inherit from other classes,
try to inherit only from other slot classes.
``attrs`` slot classes can inherit from other classes just like non-slot classes, but some of the benefits of slot classes are lost if you do that.
If you must inherit from other classes, try to inherit only from other slot classes.
Slot classes are a little different than ordinary, dictionary-backed classes:
* assigning to a non-existent attribute of an instance
will result in an ``AttributeError`` being raised.
Depending on your needs, this might actually be a good thing
since it will let you catch typos early.
- Assigning to a non-existent attribute of an instance will result in an ``AttributeError`` being raised.
Depending on your needs, this might be a good thing since it will let you catch typos early.
This is not the case if your class inherits from any non-slot classes.
.. doctest::
.. doctest::
>>> @attr.s(slots=True)
... class Coordinates(object):
@ -428,11 +421,10 @@ Slot classes are a little different than ordinary, dictionary-backed classes:
...
AttributeError: 'Coordinates' object has no attribute 'z'
* slot classes cannot share attribute names with their instances,
while non-slot classes can.
- Slot classes cannot share attribute names with their instances, while non-slot classes can.
The following behaves differently if slot classes are used:
.. doctest::
.. doctest::
>>> @attr.s
... class C(object):
@ -445,12 +437,8 @@ Slot classes are a little different than ordinary, dictionary-backed classes:
>>> C.x
<member 'x' of 'C' objects>
* since non-slot classes cannot be turned into slot classes
after they have been created,
``attr.s(.., slots=True)`` will actually replace the class
it is applied to with a copy.
In almost all cases this isn't a problem,
but we mention it for the sake of completeness.
- Since non-slot classes cannot be turned into slot classes after they have been created, ``attr.s(.., slots=True)`` will actually replace the class it is applied to with a copy.
In almost all cases this isn't a problem, but we mention it for the sake of completeness.
Other Goodies