[issue39614] Documentation of attribute reference is unclear

2020-02-11 Thread Dirk Herrmann


New submission from Dirk Herrmann :

Trying to understand attribute reference in Python, I was lost:

* In the "Python Language Reference" (I will refer to this as PLR, sorry if 
that is uncommon, did not find an abbreviation in the glossary): Chapter 6.3.1 
is about attribute reference.  How the attribute reference actually works is 
not explained in detail, only with the sentence "This object is then asked to 
produce the attribute whose name is the identifier." which I find vague.  
Moreover, in PLR 6.3.1 it is said that it can be customized overriding 
"__getattr__()", but again, details are unclear.  And, when following the link 
to "__getattr__()" it turns out that "__getattr__()" is not called for 
attribute access, but only in certain circumstances:

* PLR 3.3.1 section "object.__getattr__(self, name)" explains that this is only 
called when "default attribute access" fails.  There is nowhere an explanation 
of "default attribute access", it is also not mentioned in the index.  There is 
some explanation in parentheses what it means if "default attribute access" 
fails, but the actual procedure of the "default attribute access" is still not 
clear.  A bit further down in this section it is also mentioned that if an 
attribute is found using the "normal mechanism" then "__getattr__()" is not 
called - again not explaining what the "normal mechanism" is.  There is some 
reference to "__getattribute__()" here, saying that with "__getattribute__()" 
there would be "total control over attribute access", but this leads again to 
confusion:

* PLR 3.3.1 section "object.__getattribute__(self, name)" indicates that this 
"may still be bypassed" in certain circumstances, referring to PLR 3.3.10, 
special method lookup, which refers to the "conventional lookup process", to 
which this is an exception.  The basis why this is an exception remains unclear 
- is it that certain method names are detected during attribute reference?

Summary: There is not (or I was too stupid to find) a concise description of 
how attribute reference works.  There are several terms used to refer to 
certain aspects of it: "default attribute access", "normal mechanism [of 
attribute access]", "conventional lookup process", which may or may not refer 
to the same thing, which seems not to be documented anyway.

--
assignee: docs@python
components: Documentation
messages: 361837
nosy: Dirk Herrmann, docs@python
priority: normal
severity: normal
status: open
title: Documentation of attribute reference is unclear
type: enhancement
versions: Python 3.8

___
Python tracker 
<https://bugs.python.org/issue39614>
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue43138] [doc] Inconsistent / confusing documentation regarding importing submodules

2021-02-05 Thread Dirk Herrmann


New submission from Dirk Herrmann :

In the language reference, section "7.11 The import statement" is is explained 
in the example section:

   import foo.bar.baz # foo.bar.baz imported, foo bound locally

When looking at "5.3. Searching", it is stated that regarding foo.bar.baz:

   In this case, Python first tries to import foo, then foo.bar, and finally 
foo.bar.baz.

I find this confusing.  Assuming that 5.3 is correct, the examples in 7.11 
could be improved, like, for the sample line mentioned above:

   import foo.bar.baz # foo, foo.bar and foo.bar.baz imported, foo 
bound locally

--
assignee: docs@python
components: Documentation
messages: 386532
nosy: Dirk Herrmann, docs@python
priority: normal
severity: normal
status: open
title: [doc] Inconsistent / confusing documentation regarding importing 
submodules
type: enhancement
versions: Python 3.10

___
Python tracker 
<https://bugs.python.org/issue43138>
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com