Inquiry regarding the name of subprocess.Popen class

Marc 'BlackJack' Rintsch bj_666 at gmx.net
Wed Sep 3 02:40:10 EDT 2008


On Tue, 02 Sep 2008 19:54:12 -0400, Derek Martin wrote:

>> And if they model an action there must be some way to activate the
>> action
> 
> That's a reasonable assumption, but as I also said, the object might
> just describe the action -- essentially the equivalent of a struct in C.

``struct``\s in C describe *actions*!?  Functions do this.  And a class 
that describes an action that is executed in the `__init__()` method is 
conceptually a function and shouldn't be a class.  There must be a better 
name for the "thing" it returns.  Again guideline, not law, but a very 
strong guideline IMHO.

>> but the instances of `Popen` are no actions.  There's no way to
>> "execute" a `Popen` instance.
> 
> Yes there is... you execute it when you instantiate the object.

But then the instance itself isn't an action but the result of one.

> At the time of instantiation, you "open" the "P" (pipes).  For an
> object which describes an action, I think it's perfectly sensible that
> instantiation is when the action occurs, […]

Here I disagree again.  Because the type/class name of an instance should 
be a name of the "thing"/concept of the instance, not the action used to 
create it.

>> > Yet some of you state your case as if it is incontrovertable fact.
>> > I've given a good case as to why it IS a good name (one which I
>> > genuinely support), and disagree as you may, none of the points any
>> > of you have made invalidate or even weaken my argument.
>> 
>> Maybe from your POV.  Facts:  It doesn't use the `popen()` function
> 
> So?  Neither does the C version of popen(), but that function is still
> called popen()!

Now you lost me.  The C version of `popen()` isn't recursive, why on 
earth should it be, so what's that statement supposed to mean!?

>> to three file objects, more attributes and methods), the function used
>> on Windows under the hood is called `CreateProcess()` not
>> `CreatePipe()`.
> 
> How does Windows implement popen()?  [I think they call it _popen()
> though...]

Doesn't matter because the `Popen()` implementation doesn't use `popen()`.

Ciao,
	Marc 'BlackJack' Rintsch



More information about the Python-list mailing list