并行类层次结构C ++最终出现在抽象类中

问题描述

为什么这个简单的类层次结构最终以抽象类B结尾?在这种情况下,我不知道要搜索的热门词汇。 (也许是钻石问题?)

from sqlalchemy import Column,Integer,String,MetaData
from sqlalchemy import create_engine
engine = create_engine("db2+ibm_db://userId:password@host:port/db") #create a database engine
from sqlalchemy.ext.declarative import declarative_base
Metadata = MetaData(schema='schemaName')
Base = declarative_base(bind=engine,Metadata=Metadata)

class Customers(Base):
   __tablename__ = 'tableName'
   CLIENT_ID = Column(Integer,primary_key=True)
   CLIENT_NAME = Column(Integer)
   CREATED_BY = Column(String)

from sqlalchemy.orm import sessionmaker
Session = sessionmaker(bind = engine)
session = Session()
result = session.query(Customers).limit(2)

for row in result:
   print (row.CLIENT_NAME )

解决方法

看起来B从A继承,A从I_B继承,I_B从I_A继承。 B也继承自I_B,后者也继承自I_A。

diamond inheritance problem是要搜索的关键字,因为您要通过两种不同的方式继承相同的内容。 Stroustrup提到了这一点,并举例说明了该怎么做。