class unbound method and datetime.datetime.today()
Diez B. Roggisch
deets at nospam.web.de
Tue Jan 9 02:18:58 EST 2007
cinsky at gmail.com schrieb:
> Hi, I got confused when I learned the function datetime.today().
>
> So far I learned, unless an instance is created, it is not possible to
> call the class method. For example:
>
> class Foo:
> def foo(self):
> pass
>
> Foo.foo() # error: unbound method foo().
>
> What makes me confused is that datetime class? in datetime module
> provides today() function that returns the datetime object.
>
>>>> import datetime
>>>> datetime.datetime.today()
> datetime.datetime(2007, 1, 9, 15, 34, 35, 23537)
>
> It looks like that datetime class provides today() method that can be
> callable even if it is unbound method. Do I correct?
>
> If it is possible to make that kind of function (looks like static
> member function in C++), how can I make that?
It is called a classmethod (in contrast to an instancemethod, which is
the usual thing), and you can do it - depending on the version of python
you have - using the built-in funtion/decorator "classmethod". Like this:
class Foo(object):
@classmethod
def bar(cls):
pass
Note that a classmethod gets passed the class as first argument, not an
instance.
You can also create static methods, using "staticmethod". They won't get
passed anything.
Diez
More information about the Python-list
mailing list