我想用 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[]
您的代码中有语法错误 - 您不需要在班级的任何地方使用
[]
。
下面是一个示例,您可以使用
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'],
},
)
你的缩进混乱了:
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
原来的问题是说“电话”是iPhone的类型??不是反过来吗
为什么需要存储类型名称?如果特殊的电话类型是从基类Phone继承的类,那么类的名称就表示类型?