Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中处理从数据库提取的子类/超类记录_Python_Oop_Object - Fatal编程技术网

在python中处理从数据库提取的子类/超类记录

在python中处理从数据库提取的子类/超类记录,python,oop,object,Python,Oop,Object,我有一个python应用程序和一个postgresql数据库,其中有两个相互关联的表: “设备”存储有关设备类型信息的记录,如描述、图片和id字段 “项目”存储有关设备单个项目的记录,例如序列号和id字段 我已经为每个类创建了一个类,目前有一个get(id)方法从数据库检索数据并将其存储在类的实例中,还有create()和update()方法从类实例获取数据并将其存储在数据库中 我希望“Item”是“设备”的一个子类,这样当您访问“Item.description”时,您就可以得到设备的描述。我

我有一个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添加了这些类,目前它没有继承,因为我不知道如何做我所描述的,但我希望它这样做。