2017-04-13 10 views
1

私はpythonには新しく、これが可能かどうかを知りたいと思います:子オブジェクトと親オブジェクト

私はオブジェクトを作成し、それを別のオブジェクトに貼りたいと思います。

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

これは可能ですか?

+1

をあなたは「別のオブジェクトにアタッチ」とはどういう意味ですか? – sgrg

+1

短い答えは「はい」です。正しい答えは:あなたはこれが解決すると思われることを何をしようとしていますか?これは[XY問題](https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)のように聞こえます – TemporalWolf

+0

私たちは本当に簡単な問題を想像することができます。私には物体があります:車。私は赤と青の2つを作成します。その後、私はディファレンシャルウェイトで8本のタイヤ(各車に4本)を作ります。私は青い車と赤い車のための4つのタイヤの重量を最後に知りたい。 – Ralk

答えて

1

:その人のクラスでは、従業員

の親はここで本当に私は、継承を理解する助けた記事へのリンクですさ

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 
4

あなたがオブジェクト指向の用語について話している場合は、はいあなたは、あなたが何をしたいのか明確に説明していけないことができますが、OOPについて話している場合は、私の心に来て2つの物事は以下のとおりです。

  • あなたが相続の話をしている場合、あなたはあなたの子クラスを作成するときに子オブジェクトが親オブジェクトを拡張することができます:クラスの子(親):
  • あなたがオブジェクト合成について話している場合は、あなただけの子供が親オブジェクトのisntance変数をオブジェクト作成し、それをコンストラクタ変数として渡す
0
しかし、彼らは一人でなければならない従業員であることを、このシナリオオブジェクトは、従業員であることのない人でできて

はここでの例です。あなたの例に従って 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()) 
関連する問題