trailing underscores naming convention_

Peter Otten __peter__ at web.de
Fri May 9 07:49:11 EDT 2014


Metallicow wrote:

> On Friday, May 9, 2014 3:10:26 AM UTC-6, Peter Otten wrote:
>> Metallicow wrote:
>> 
>> > I guess to be more clear here is a small code snippet that shows what
>> > is happening more readably. Hence the underscores question.
>> 
>> Working with multiple names with small differences is error-prone.
>> You should give a method a name that describes what it does rather than
>> when it's invoked:
>> 
>> > class MainAuiManager(aui.AuiManager):
>> >     def __init__(self, managed_window=None, agwFlags=0)
>> >         aui.AuiManager.__init__(self, managed_window, agwFlags)
>> 
>>           self.Bind(wx.EVT_LEFT_DCLICK, self.EatMagicMushroom)
>>           self.Bind(wx.EVT_LEFT_DCLICK, self.KillBlueMonster)
>>           self.Bind(wx.EVT_LEFT_DCLICK, self.SingDitty)
> 
> While readabily counts, in this case it is pretty readable already.
> Actions speak loader than words. In this case action(as with QT) is an
> event(in wxPython). My actual code would only(realisticly or sanely)
> extend this event once per subclass if at all... 

You should reconsider Ian's advice to override the method then. 

[in another post]
> I tried the super thing, but in this instance what you posted calls my 
method twice, which isn't desired. 

Note that if you have

self.Bind(wx.EVT_LEFT_DCLICK, self.OnLeftDClick)

in the base class initialiser you must not repeat it in the subclass -- 
perhaps that is what caused OnLeftDClick() to be invoked twice.

> ...Unless there happens
> to be some crazy need for more(multiple) event methods to fire off when 1
> event happens. Especially for a class bound intended for a top level
> window such as a frame or dialog.
> 
> Anyway, the small snippet just shows that this can be done, but the actual
> question you replied to you left unanswered. It is about the trailing
> underscores.

My implicit answer was that you are asking for the best hammer to drive a 
screw...

> Now would KillBlueMonsterA vs KillBlueMonsterB vs KillBlueMonster_ be any
> more descriptive than OnLeftDClick_ which describes the event happening
> itself and the code that extends it by 1, in this case the call order.
> I could see the underscore as an extension thereof.
> ...so maybe OnLeftDClick_Extension_Description_ might be better...
> but why the trailing underscores?

I do not remember having seen these trailing underscores. Who is using them 
where? Someone misapplying the (questionable) C++ convention to mark 
members?

> Maybe others that do this normally can chime in as to
> why they for example would put the underscores on the end,
> if it isn't a common convention. Maybe it is like I see it, as an
> extextion of some special meaning or reason therof, but isn't always
> obvious as most like the name not only desciptive, but short also.





More information about the Python-list mailing list