Ulrich Eckhardt a écrit :
(snip)

Now, what actually causes problems is that 'fact_rec' is not universally
accessible until class 'Demo' is fully defined, but you need this in order
to fully define it. Here comes a drawback of the dynamic nature of Python,
that the declaration phase (compiling) is not separate from the execution.

It is. You can manually compile a module, remove the source .py and still import (or execute) the compiled .pyc.

The "problem" here is not with compilation, but with the fact that 'class' (and 'def') statements are *executable* statements. IOW, the class statement is executed when encountered, that is, usually (most class statements being top-level statements), when the module is first loaded.


I fully agree that this case is rather vexing to my (and obviously your)
biased brain. I wouldn't call this a bug before fully understanding why
e.g. you can not access a class before its definition is finished.

Nor why it's a GoodThing(tm) for quite a lot of use case - while the OP's problem is in the splitting-hairs category - only a problem if yoçu insist in imposing your views on the language instead of learning how to use it.

Suggestion: someone mentioned that you should make the function a normal
function.
(snip)

Someone (Diez Roggisch IIRC) also mentionned a simple solution that mostly fulfills the OP's desires: use a nested function.
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to