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 に答える