bpo-12634: Clarify an awkward section of the tutorial (GH-15406)

This commit is contained in:
Raymond Hettinger 2019-08-22 23:27:04 -07:00 committed by GitHub
parent 657008ea03
commit 483ae0cf1d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -475,12 +475,20 @@ Random Remarks
.. These should perhaps be placed more carefully...
Data attributes override method attributes with the same name; to avoid
accidental name conflicts, which may cause hard-to-find bugs in large programs,
it is wise to use some kind of convention that minimizes the chance of
conflicts. Possible conventions include capitalizing method names, prefixing
data attribute names with a small unique string (perhaps just an underscore), or
using verbs for methods and nouns for data attributes.
If the same attribute name occurs in both an instance and in a class,
then attribute lookup prioritizes the instance::
>>> class Warehouse:
purpose = 'storage'
region = 'west'
>>> w1 = Warehouse()
>>> print(w1.purpose, w1.region)
storage west
>>> w2 = Warehouse()
>>> w2.region = 'east'
>>> print(w2.purpose, w2.region)
storage east
Data attributes may be referenced by methods as well as by ordinary users
("clients") of an object. In other words, classes are not usable to implement