class vs function ???
Paul Prescod
paul at prescod.net
Sun Feb 22 02:06:14 EST 2004
Gaurav Veda wrote:
> Hi !
>
> I have read all the replies and they are all extremely helpful. Thanks
> a lot !!!
> My basic doubts were :
> 1) I am allowed to write things in the class body without the need for
> encapsulating them in functions. Moreover, they are executed as soon
> as I define the class. Infact, I can also call functions in the class
> body (the way I called fun2). All this, while I am just defining the
> class ! -- I still don't understand why are classes implemented in
> this way in pyhton.
In Python, function declarations ("def"s) are statements just like "if"
or "print" or "while". Anywhere you can define a function you can use
"if" or "print" or "while" and anywhere you can use "if" or "print" or
"while", you can use "def". This simplifies the language by removing
special cases. This basic concept is also very powerful sometimes:
class do_somethin_in_a_cross_platform_way:
if sys.platform=="win32":
import some_win32_library
def myfunc():
some_win32_library.dosomething()
else:
import some_unix_library
def myfunc():
some_win32_library.dosomething()
For various reasons you are unlikely to see code that looks exactly like
that but you should get the gist of how you can take advantage of
Python's flexibility. Here's another kind of pattern that may stretch
your mind:
def function_that_makes_functions(arg1):
def inner_function(self, arg2):
... do something with arg1 and arg2 ...
return inner_function
class a:
mymethod1 = function_that_makes_functions("abc")
mymethod2 = function_that_makes_functions("def")
> ...
> Being a 3rd year undergraduate student, I have to make a Python
> 'compiler' (I know it sounds foolish -- but thats what my instructor
> wants me to do !).
There are actually a few Python compilers out there. compiler.py
compiles to Python bytecodes. Pyrex compiles to C. Jython compiles to
Java bytecodes. There are couple of half-implemented compilers to .NET
bytecodes.
You probably need to define a subset as Pyrex does. Compiling all of
Python is quite a challenge and won't teach you much about how people
compile more traditional languages like Java or C.
Paul Prescod
More information about the Python-list
mailing list