在Python中,对象是否可以将另一个对象作为属性?例如,一个名为 car 的类可以将一个名为轮胎的类作为属性吗?
答案 0 :(得分:2)
您是指课程tire
还是课程tire
的实例?虽然后者可能更有用,但它可以兼得。如果您正在寻找类别为Mary
的 has -a 对象的对象,那么您需要Fred
各种任务:
classinst
答案 1 :(得分:0)
不确定;与任何其他值一样,类可以是类或实例属性:
class A(object):
pass
class B(object):
class_attr = A
def __init__(self):
self.instance_attr = A
使用此代码,您可以使用B.class_attr
或B().instance_attr
访问A
。
答案 2 :(得分:0)
是
>>> class tire:
... pass
...
>>> class car:
... def __init__(self, tire):
... self.tire = tire
...
>>> t = tire()
>>> t.brand = 'Goodyear'
>>> c = car(t)
>>> c.tire.brand
'Goodyear'
答案 3 :(得分:0)
您可以将实例和类作为类和实例的属性 - 所有四种组合都可以正常工作(并且可以自由组合)。但是,请记住类和实例之间的区别 - 您表达问题的方式表明存在一些混淆。无论如何,从字面上理解你的问题:
一个名为car的类可以有一个类 把轮胎称为属性?
class tire(object):
...class body here...
class car(object):
thetire = tire
...rest of class body here...
tire = tire
正文中的car
赋值不起作用(命名混淆! - ),因此您需要将class属性命名为与其值相同的类。 (这不适用于实例属性,因为它们的语法(例如self.tire
)是限定名称的语法,而不是姓名,因此没有命名混淆 - 仅限 class 属性)。这种问题是导致你提出这个问题的问题的根源吗?