0

编辑:

我将添加整个代码,类和东西的名称是西班牙语,但我希望你明白:

class Rubro():
'''
Representa un rubro de venta. Por ejemplo: pastas y quesos son dos
rubros diferentes.
'''
def __init__(self, id, nombre, descripcion, icono=None):
    self.id = id
    self.nombre = nombre
    self.descripcion = descripcion
    self.icono = icono
    self.col_variedades = {}
    self.objBroker = persistencia.obtener_broker(self, None)

def obtener_todos(self):
    self.objBroker.cargar_todo() 

class Broker():
def cargar_todo(self):
    pass


class sqliteBrokerArticulos(Broker):

def __init__(self):
    self.obj_db = sqliteDB()

def cargar_todo(self):
    return self.ejecutar("SELECT * FROM articulos")

def ejecutar(self, sentenciaSQL):
    conn = self.obj_db.abrir_conexion()
    try:
        conn.execute(sentenciaSQL)
        conn.commit()
    except:
        return False
    self.obj_db.cerrar_conexion()

我真的不知道如何解释它,这是代码:

class A():

    def a(self):
        return self.objC.b()

class B():
    def b(self):
       #do something

class C(B):

    def b(self):
       #do something else

问题是它没有进入 b(),它只是跳过它,当它到达那条线时退出 a()

我不知道会是什么。

4

1 回答 1

0

你想知道为什么 Bb() 方法永远不会被调用吗?或者为什么永远不会调用 Cb() 方法?

如果是前者,那是因为在 Cb() 中,你没有调用超类方法:

>>> class B(object):
...   def b(self):
...     print "in B.b"
...
>>> class C(B):
...   def b(self):
...     print "in C.b"
...
>>> c = C()
>>> c.b()
in C.b
>>> class C(B):
...   def b(self):
...     print "in C.b"
...     super(C, self).b()
...
>>> c = C()
>>> c.b()
in C.b
in B.b
>>>
于 2012-10-05T22:58:05.633 回答