编辑:
我将添加整个代码,clases和东西的名字都是西班牙语,但我希望你理解:
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(),它只是跳过它,当它到达那条线时就离开了()
我不知道它会是什么。
答案 0 :(得分:0)
您是否想知道为什么从不调用B.b()方法?或者为什么永远不会调用C.b()方法?
如果是前者,那是因为在C.b()中,你没有调用超类方法:
>>> 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
>>>