On 30/10/2022 11.59, Paulo da Silva wrote:
Solution (below) will not work if the mention of Foos in GLOBALS is a
forward-reference. Either move GLOBALS to suit, or surround "Foos"
with quotes.
This is the problem for me. So far, without typing, I used to have some
config and globals classes, mostly to just group definitions an make the
program more readable. A matter of taste and style.
Agreed, a good practice.
Now, "typing" is breaking this, mostly because of this forward reference
issue.
As a first step, use the quotation-marks to indicate that such will be
defined later in the code:-
class GLOBALS:
Foos: Optional[Foos]=None
class GLOBALS:
Foos: Optional["Foos"]=None
Later, as gather (typing) expertise, can become more sophisticated,
as-and-when...
The funny thing is that if I replace foos by Foos it works because it
gets known by the initial initialization :-) !
Is the objective to write (good) code, or merely to satisfy the
type-checker?
Something that is misleading is not going to be appreciated by others
(including the +6-months you), eg
a = a + 1 # decrement total
Typing is not compulsory, and has been designed so that we can implement
it a bit at a time, eg only one function amongst many contained by a
module - if that's the only code that requires maintenance/update.
Best not to create "technical debt" though!
--
Regards,
=dn
--
https://mail.python.org/mailman/listinfo/python-list