如何在Python中为实体定义一个好的数据结构?

问题描述 投票:0回答:3

我想用 python 处理实体。每个实体都有多个属性值对和多种类型。例如,“iPhone”作为一个实体,它的 AV 对为:

Developer, Apple Inc
CPU, Samsung
Manufacturer, Foxconn 

它的类型为:

smartphone
mobilephone
telephone

我希望为实体定义

class
。但是,我需要存储二维向量
attribute-value pair
type
的信息。但下面的代码不起作用。那么如何为这种实体定义一个好的数据结构(也许没有
class
)?

class entity:
def __init__(self, type, av[]):
    self.type=type
    self.av[]=av[]
python class
3个回答
3
投票

您的代码中有语法错误 - 您不需要在班级的任何地方使用

[]

下面是一个示例,您可以使用

list
表示类型信息,使用
dict
表示属性:

class Entity:

   def __init__(self, types, attributes):
       self.types = types
       self.attributes = attributes

iphone = Entity(
    types=['smartphone', 'mobilephone', 'telephone'],
    attributes={
        'Developer': ['Apple Inc'],
        'CPU': ['Samsung'],
        'Manufacturer': ['Foxconn', 'Pegatron'],
    },
)

3
投票

你的缩进混乱了:

class entity:
    def __init__(self, type, av[]):
        self.type=type
    self.av[]=av[]

进一步;理想情况下,您应该创建一个 Entity 类和一个继承它的 IPhone 子类。每个属性都应该是类属性,而不仅仅是列表/字典中的值。像这样的东西:

class Entity(object):
    def __init__(self, type):
        self.type = type
    ... attributes and methods common to all entities

class IPhone(Entity):
    def __init__(self, developer, cpu, manufacturer):
        Entity.__init__(self, "smartphone")
        self.developer = developer
        self.cpu = cpu
        self.manufacturer = manufacturer

0
投票

原来的问题是说“电话”是iPhone的类型??不是反过来吗

为什么需要存储类型名称?如果特殊的电话类型是从基类Phone继承的类,那么类的名称就表示类型?

© www.soinside.com 2019 - 2024. All rights reserved.