[EMAIL PROTECTED] wrote: > Please check for sanity and approve for posting at python-dev. > > In Visual Basic there is the keyword "with" which allows an object- > name to be declared as governing the following statements. For > example: > > with quitCommandButton > .enabled = true > .default = true > end with > > This is syntactic sugar for: > > quitCommandButton.enabled=true > quitCommandButton.default=true > > This can be very useful especially in GUI programming when we have to > type the same object name in line-after-line. I personally found > having to type the word "self" umpteen times inside classes very > irritating. Such a beautiful language is Python, she should have this > good feature from VB too. > > Now I hear that the word "with" is being discussed for a different > purpose in Py 3 as a result of a PEP and I don't want to conflict with > that. So I propose the word "using" as a replacement. This also is > similar to the C++ "using" keyword which exposes the members of a > namespace to access without specifying the namespace scope for each > reference. For example after giving "using namespace std;" I can > change all references to "std::cout" to "cout", which is similar to > what I am proposing for Python now. > > Some thoughts about how this "using" statement should behave. The word > using should be followed by an object name and a colon indicating the > start of a block. The object named after "using" must determine the > context (or whatever the technical word is) of the of the statements > in that block. > > self.setFixedSize(200, 120) > self.quit = QtGui.QPushButton("Quit", self) > self.quit.setGeometry(62, 40, 75, 30) > self.quit.setFont(QtGui.QFont("Times", 18, QtGui.QFont.Bold)) > self.connect(self.quit, QtCore.SIGNAL("clicked()"), QtGui.qApp, > QtCore.SLOT("quit()")) > > to be rewritten as: > > using self: > __setFixedSize(200,120) > __quit = QtGui.QPushButton("Quit", self) > __using quit: > ____setGeometry(62, 40, 75, 30) > ____setFont(QtGui.QFont("Times", 18, QtGui.QFont.Bold)) > __connect(self.quit, QtCore.SIGNAL("clicked()"), QtGui.qApp, > QtCore.SLOT("quit()")) > > [I don't know whether usenet will retain my indenting, so I changed > the tabs to underscores.] > > This context governing may need to be limited to the first applicable > member - so that in the above example "self" governs setFixedSize, > quit, quit and connect only in each sentence and quit (self.quit) > governs setGeometry and setFont only. (Point is that the parser should > not search for self.QtGui, self.self or self.QtCore in sentences 3 and > 7, and self.quit.QtGui in sentence 6.) > > Due to my absence of professional experience, my request may be > somewhat unpolished technical-wise, but I believe that this is a very > useful feature for Python and hence request the technically- > knowledgeable to reformat it as necessary. Thank you. >
I like this one for some reason. Just the "using self" would save hella typing in a lot of classes. I would favor a convention with leading dots to disambiguate from other variables. This wouldn't conflict with, say, floats, because variable names can't begin with a number. James -- http://mail.python.org/mailman/listinfo/python-list