繁体   English   中英

子对象和父对象

[英]Child and parent object

我是python的新手,我想知道这是否可行:

我想创建一个对象并将另一个对象附加到该对象。

OBJECT A
    Child 1
    Child 2
OBJECT B
    Child 3
    Child 4
    Child 5
        Child 6
            Child 7

这可能吗 ?

如果您正在谈论面向对象的术语,是的,可以,您并没有清楚地解释要做什么,但是,在谈论OOP时,我想到的两件事是:

  • 如果您在谈论继承,则可以在创建子类时使子对象扩展父对象:class child(parent):
  • 如果您在谈论对象组成,则只需将子对象作为父对象的非对称变量,并将其作为构造函数变量传递

遵循您的示例:

class Car(object):
    def __init__(self, tire_size = 1):
        self.tires = [Tire(tire_size) for _ in range(4)]

class Tire(object):
    def __init__(self, size):
        self.weight = 2.25 * size

现在您可以制造一辆汽车并查询轮胎重量:

>>> red = Car(1)
>>> red.tires
[<Tire object at 0x7fe08ac7d890>, <Tire object at 0x7fe08ac7d9d0>, <Tire object at 0x7fe08ac7d7d0>, <Tire object at 0x7fe08ac7d950>]
>>> red.tires[0]
<Tire object at 0x7fe08ac7d890>
>>> red.tires[0].weight
2.25

您可以根据需要更改结构,更好的方法是(如果所有轮胎都相同)仅指定tirenum_tires

>>> class Car(object):
    def __init__(self, tire):
        self.tire = tire
        self.num_tires = 4
>>> blue = Car(Tire(2))
>>> blue.tire.weight
4.5
>>> blue.num_tires
4

这是一个例子:

在这种情况下,对象可以是没有雇员的人,但是要成为雇员,他们必须是人。 因此,人员类别是员工的父母

这是真正帮助我了解继承的文章的链接: http : //www.python-course.eu/python3_inheritance.php

class Person:

    def __init__(self, first, last):
        self.firstname = first
        self.lastname = last

    def Name(self):
        return self.firstname + " " + self.lastname

class Employee(Person):

    def __init__(self, first, last, staffnum):
        Person.__init__(self,first, last)
        self.staffnumber = staffnum

    def GetEmployee(self):
        return self.Name() + ", " +  self.staffnumber

x = Person("Marge", "Simpson")
y = Employee("Homer", "Simpson", "1007")

print(x.Name())
print(y.GetEmployee())

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM