Arg names in class and function code - Newbie question
Roy Smith
roy at panix.com
Mon Apr 28 18:46:01 EDT 2003
newspost at lolmc.com (Lol) wrote:
> HI all,
> Could anyone let me know - do the names you give as arguments HAVE to be
> actual variable names?
> e.g def readFile(filename,dir):
> blah blah
> return blah
> or even class FileRead(filename,dir):
> def doSomething (self,this):
> yadda yadda
> return yadda
>
> In the above examples do filename and dir have to be the name of the
> variables to pass as args to the class/functions OR are they descriptive
> so I can pass the real name of the file and directory?
I'm not completely sure I understand what you're asking, but if you're
asking what I think you're asking, you're confused. If not, them I'm
confused. Pressing on with the first assumption in mind....
When you say
def readFile (filename, dir):
the variables "filename" and "dir" are what's known in computer science
circles as "formal parameters". Basicly, you're saying that readFile is
supposed to get called with two arguments. This creates two variables
for this function to use, "filename", which will get initialized to the
value of the first argument, and "dir" which will get initialized with
the value of the second.
Their names can be anything you like. They need not (and usually don't)
match the variable names used in the part of the program which calls the
function. You can call it with constants if you like:
def readFile (filename, dir):
blah blah
return blah
readFile ("eggs", "/spam/spam/spam/spam/spam/spam/spam")
As for the
class FileRead(filename,dir):
def doSomething (self,this):
yadda yadda
return yadda
I'm really not sure what you're trying to do there. As written, you've
defined a class which inherits from a class who's name is in filename,
and from another class who's name is in dir (at the time the class
statement is executed). This is legal, but I suspect it's not what you
had in mind :-)
Perhaps you were thinking of an __init__() method which would take those
two arguments? In which case, you'd have something like:
class FileRead:
def __init__ (self, filename, dir):
self.file = open (dir + '/' + filename)
def doSomething (self, this):
yadda yadda
return yadda
As a matter of style (and perhaps I'm really picking a nit here), I'd
avoid "this" as a variable name. In Python, "self" is the standard name
for an object's handle to itself, and "this" plays that role in C++.
There's nothing inherently wrong with using "this" as a Python varible
name, but it just seems like a potential source of confusion.
More information about the Python-list
mailing list