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

What's the difference between built-in func getattr() and normal call of a func of a class

P: n/a
Hi,

I wonder what is the difference between the built-in function
getattr() and the normal call of a function of a class. Here is the
details:

getattr( object, name[, default])

Return the value of the named attributed of object. name must be a
string. If the string is the name of one of the object's attributes,
the result is the value of that attribute. For example, getattr(x,
'foobar') is equivalent to x.foobar. If the named attribute does not
exist, default is returned if provided, otherwise AttributeError is
raised.

Is that to say the only difference between the two is that no
matter the specific function exists or not the built-in func will
always return a value, but "class.function" will not?

Aug 23 '05 #1
Share this Question
Share on Google+
3 Replies


P: n/a
Johnny wrote:
Hi,

I wonder what is the difference between the built-in function
getattr() and the normal call of a function of a class. Here is the
details:

getattr( object, name[, default])

Return the value of the named attributed of object. name must be a
string. If the string is the name of one of the object's attributes,
the result is the value of that attribute. For example, getattr(x,
'foobar') is equivalent to x.foobar. If the named attribute does not
exist, default is returned if provided, otherwise AttributeError is
raised.

Is that to say the only difference between the two is that no
matter the specific function exists or not the built-in func will
always return a value, but "class.function" will not?


No, it will only return _always_ a value if you provide a default one.
If not, they have the exact same semantics.

What you've got here is something usually called "syntactic sugaring" -
a specialized syntax that performs certain instructions that _could_ be
done by hand - but the concise syntax is (supposedly, and certainly in
this case) easier to read/write/understand.

There are others - e.g. list comprehensions or a < b < c.

Regards,

Diez
Aug 23 '05 #2

P: n/a

Diez B. Roggisch wrote:
No, it will only return _always_ a value if you provide a default one.
If not, they have the exact same semantics.

What you've got here is something usually called "syntactic sugaring" -
a specialized syntax that performs certain instructions that _could_ be
done by hand - but the concise syntax is (supposedly, and certainly in
this case) easier to read/write/understand.

There are others - e.g. list comprehensions or a < b < c.

Regards,

Diez


Cool~
Thanks for showing me the "syntactic sugaring":)

Aug 23 '05 #3

P: n/a
Johnny wrote:
Hi,

I wonder what is the difference between the built-in function
getattr() and the normal call of a function of a class. Here is the
details:

getattr( object, name[, default])

Return the value of the named attributed of object. name must be a
string. If the string is the name of one of the object's attributes,
the result is the value of that attribute. For example, getattr(x,
'foobar') is equivalent to x.foobar. If the named attribute does not
exist, default is returned if provided, otherwise AttributeError is
raised.

Is that to say the only difference between the two is that no
matter the specific function exists or not the built-in func will
always return a value, but "class.function" will not?


No, getattr(object, name) will raise an AttributeError if the attribute
doesn't exist; no value will be returned. When getattr(object, name,
default) is called, then a value will be returned regardless of whether
or not the attribute exists (but possibly something else may go wrong).

In terms of practice, the getattr() form allows you to specify the
attribute at run-time rather than write-time. You can do things like
iterate over a list of attributes.

--
Robert Kern
rk***@ucsd.edu

"In the fields of hell where the grass grows high
Are the graves of dreams allowed to die."
-- Richard Harter

Aug 23 '05 #4

This discussion thread is closed

Replies have been disabled for this discussion.