在Python中,对象是否可以将另一个对象作为属性?

时间:2010-05-24 22:40:30

标签: python oop

在Python中,对象是否可以将另一个对象作为属性?例如,一个名为 car 的类可以将一个名为轮胎的类作为属性吗?

4 个答案:

答案 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_attrB().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 属性)。这种问题是导致你提出这个问题的问题的根源吗?