On Wed, Apr 15, 2009 at 12:27 PM, Carnell, James E < jecarn...@saintfrancis.com> wrote:
> Since # the list seems thick with OOP questions at the moment, I thought > this might # be relevant. Digest and enjoy. > > class Item ( object ): > > def __init__( self ): > self._FullName = '' > self._Recovery = 0 > self._Exporter = SimpleItemExporter (); # <----? Don't > understand > > Bummer, I was hoping to consider myself at the tip of intermediate > python programming <sigh>... > > This is the first time I have ever seen a variable set to what appears > to be a function address(?). Since I am at work I can't copy paste this > thing yet. Is SimpleItemExporter from the parent class, object? I am > assuming Item extends or inherits (or whatever the right "word" is) from > object. First off, the semicolon is probably a syntax error. SimpleItemExporter is probably a class, but I don't think object is the parent. If you were trying to access something from object I'm fairly certain you'd use the dot operator, so it would be object.SimpleItemExporter() But if it's a class it would be a new instance of that class. Otherwise it doesn't make a lot of sense to have the parenthesis (unless SimpleItemExporter returns something useful... which it isn't named like it should). Consider the following: In [1]: def foo(): ...: print "Hello" ...: ...: In [2]: x = foo() Hello In [3]: x In [4]: x('a') --------------------------------------------------------------------------- TypeError Traceback (most recent call last) /home/wayne/<ipython console> in <module>() TypeError: 'NoneType' object is not callable In [5]: class foo: ...: def __init__(self, spam): ...: print spam ...: ...: In [7]: x = foo('eggs') eggs In [8]: x Out[8]: <__main__.foo instance at 0x9f0304c> In [9]: x() --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) /home/wayne/<ipython console> in <module>() AttributeError: foo instance has no __call__ method In [10]: x.__init__('eggs') eggs --and--- In [11]: class spam: ....: def __init__(self, eggs): ....: lay(eggs) ....: def lay(x): ....: print x ....: ....: In [13]: class foo(spam): ....: def __init__(self, bar): ....: lay(bar) ....: ....: In [14]: x = foo('Ni') --------------------------------------------------------------------------- NameError Traceback (most recent call last) /home/wayne/<ipython console> in <module>() /home/wayne/<ipython console> in __init__(self, bar) NameError: global name 'lay' is not defined --------------------- The above snippets seem to show what I stated before - SimpleItemExporter is a class on it's own - not a method/function in the object class. If that were the case then my class foo should have direct access to the lay function, AFAIK. HTH, Wayne
_______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor