在python中处理从数据库提取的子类/超类记录
我有一个python应用程序和一个postgresql数据库,其中有两个相互关联的表: “设备”存储有关设备类型信息的记录,如描述、图片和id字段 “项目”存储有关设备单个项目的记录,例如序列号和id字段 我已经为每个类创建了一个类,目前有一个get(id)方法从数据库检索数据并将其存储在类的实例中,还有create()和update()方法从类实例获取数据并将其存储在数据库中 我希望“Item”是“设备”的一个子类,这样当您访问“Item.description”时,您就可以得到设备的描述。我如何管理这个子类,使每个“设备”的多个“项目”实例只有一个实例 创建子类实例后,是否可以更改其父实例 编辑:根据请求在下面添加类,项类应具有与类型类相同的方法在python中处理从数据库提取的子类/超类记录,python,oop,object,Python,Oop,Object,我有一个python应用程序和一个postgresql数据库,其中有两个相互关联的表: “设备”存储有关设备类型信息的记录,如描述、图片和id字段 “项目”存储有关设备单个项目的记录,例如序列号和id字段 我已经为每个类创建了一个类,目前有一个get(id)方法从数据库检索数据并将其存储在类的实例中,还有create()和update()方法从类实例获取数据并将其存储在数据库中 我希望“Item”是“设备”的一个子类,这样当您访问“Item.description”时,您就可以得到设备的描述。我
class Equipment:
def __init__(self, bookingid=None, description=None, category=None,
replacementprice=None, forcelabel=None, image=None):
"""Class to hold Equipment Data"""
self.id = None
self.bookingid = bookingid
self.description = description
self.category = category
self.replacementprice = replacementprice
self.forcelabel = forcelabel
self.image = image
self.stamp = None
def get(self, equipmentid):
"""retrieve equipment from database"""
data = itemops.getequipment(equipmentid)
self.id = data[0]
self.bookingid = data[1]
self.description = data[2]
self.category = data[3]
self.replacementprice = data[4]
self.forcelabel = data[5]
self.image = io.BytesIO(data[6])
self.stamp = data[7]
def create(self):
"""create type in database"""
returned = itemops.createequipment(self)
if returned is not None:
self.id = returned[0]
self.stamp = returned[1]
return self.id
def update(self):
"""update equipment in database"""
self.stamp = itemops.updateequipment(self)
def refresh(self):
"""Update equipment instance if necessary"""
if self.stamp != itemops.getequipmentstamp(self.id):
self.get(self.id)
return True
else:
return False
class Item:
def __init__(self, equipmentid=None, barcode=None, serial=None):
self.id = None
self.equipmentid = equipmentid
self.barcode = barcode
self.serial = serial
self.eventid = None
self.out_noteid = None
self.in_noteid = None
self.temp = False
self.stamp = None
首先,在Item类中需要一个属性(
equipmentisd
我猜),该属性引用设备属性id
。
然后可以使用属性equipmentid
在数据库中查找类设备的距离,其中id==equipmentid
。
因此,Item类显示设备类属性description
的方法如下所示:
def显示设备描述(自我):
data=itemops.getequipment(self.equipmentid)#获取“id”等于指定的“equipmentid”(项的属性)的设备实例
return data.description#返回指定实例的描述。
项目类是否继承自设备类?“你也可以发布你的类吗?”Adamantoisetortoise添加了这些类,目前它没有继承,因为我不知道如何做我所描述的,但我希望它这样做。