By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
443,742 Members | 1,224 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 443,742 IT Pros & Developers. It's quick & easy.

class unbound method and datetime.datetime.today()

P: n/a
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?

Thanks in advance.

Jan 9 '07 #1
Share this Question
Share on Google+
1 Reply


P: n/a
ci****@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
Jan 9 '07 #2

This discussion thread is closed

Replies have been disabled for this discussion.