how to dynamically instantiate an object inheriting from several classes?
Steven D'Aprano
steve at REMOVE-THIS-cybersource.com.au
Sat Nov 22 13:09:07 EST 2008
On Sat, 22 Nov 2008 07:32:07 -0700, Joe Strout wrote:
> On Nov 21, 2008, at 7:02 PM, Steven D'Aprano wrote:
>
>>> I have a function that takes a reference to a class,
>>
>> Hmmm... how do you do that from Python code? The simplest way I can
>> think
>> of is to extract the name of the class, and then pass the name as a
>> reference to the class, and hope it hasn't been renamed in the
>> meantime...
>
> Please quit trying to confuse the kids at home. Classes in Python are
> first-class objects, and any time you refer to a class or any other
> object in Python, what you have is a reference to it.
No, at the level of Python code, what you have is the object itself.
What any specific implementation of the Python virtual machine almost
certainly will have are references, or pointers, or some other
implementation-specific form of indirection that eventually leads to the
object. But at the level of Python code, they are invisible. There are no
references at the level of Python code.
The burden of proof lies on you to prove that "reference to a class" has
any meaning at the level of Python code. First you need to define what a
reference is, in terms of *Python* entities (not implementation details),
how it differs from the object itself, and how you can tell "a reference
to a class" apart from the class itself, *at the level of Python code*.
I don't think you can do it, not without conflating implementation-level
details with Python-level details. In Python code, you have objects, and
that is all. Talking about "a reference to a class" instead of "a class"
is simply obscurantism.
--
Steven
More information about the Python-list
mailing list