Gregor Horvath wrote:
Hello,

class A(self):
  def A1():
    pass

    class B(self):
      def B1():
    #************************************
        #***  How can I access A1 here???? ***
    #************************************
    self.A1() # doesnet work because self references to  B
    self.self.A1() #doesnt work either


Renanimg class B(self1): doesnt work either because self is not bound.

OK, I suspect you're a little confused about how classes work. The items in brackets after a class name are the *base* classes of a class, not the way the class refers to itself. So Python will complain if the listed items can't be inherited from for one reason or another.


I suggest having another read of the tutorial section on classes to figure out exactly what you want to be doing:
http://www.python.org/doc/2.3.4/tut/node11.html


How can I access a method of a "upper" class?

Merely defining one class inside another class does not automatically give instances of that inner class a reference to an instance of the outer class - if such a reference is needed, it must be provided in the inner class's constructor.


E.g.

class A(object):
  class B(object):
    def __init__(self, owner):
      self._owner = owner

    def B1(self):
      self._owner.A1()

  def A1(self):
    pass

  def makeB(self):
    return A.B(self)

Cheers,
Nick.


-- http://mail.python.org/mailman/listinfo/python-list

Reply via email to