class unbound method and datetime.datetime.today()

C

cinsky

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.
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?

Thanks in advance.
 
D

Diez B. Roggisch

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.

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,579
Members
45,053
Latest member
BrodieSola

Latest Threads

Top