2016-04-01 20 views
0

私はPythonを初めて使用しています。私はオブジェクト指向プログラミングを学んでいます。 3つのオブジェクトを含むクラスを作成したいと思います。各オブジェクトには5つの属性があります。私のクラスは3つのオブジェクトは、「CPM」と呼ばれ、「スロット」と呼ばれているPython:オブジェクトと属性を持つクラスを作成する方法

、「IOM」、「MDA」と3つのすべてのオブジェクトが

1)SerialNumber 
2)PartNumber 
3)Name 
4)Status 
5)Type 

あなたは私の例を与えることができ、同じ5つの属性を持っていますオブジェクトの作成時に5つの属性すべてをどのように出力することができますか?

例が異なる名前を持っていても、いずれの例も高く評価されます。

+0

[documentation](https://docs.python.org/2/tutorial/classes.html)は、開始するのに適しています。 –

答えて

1

あなたの質問は非常に基本的なようです。あなたは非常に簡単に情報を見つけることができます... あなたのために働く人がほしいと思うように聞こえます。

ですが、今回は少し時間を割いてみましょう。 「スロット」構造のインスタンスが3つ必要な場合は、それでおしまい ? 可能性は次のとおりです。

class Slot: 
# the '__init__' method is the constructor 
# the first argument must be 'self' (as with any method belonging to the class) 
#the advantage of giving default values (here 'None') is that you do not have to care the parameter order when calling the method 
    def __init__(self,SerialNumber=None,PartNumber=None, 
       Name=None,Status=None,Type=None): 
     self.SerialNumber = SerialNumber 
     self.PartNumber = PartNumber 
     self.Name = Name 
     self.Status = Status 
     self.Type = Type 
     print('Name: ',Name,' ; SerialNumber: ',SerialNumber, 
       ' ; PartNumber: ',PartNumber, 
       ' ; Status: ',Status,' ; Type: ',Type) 

# further in the code, you create the instances of the object Slot 
CPM = Slot(Name='CPM', PartNumber='toto', Type='poo')# just to show you can give any parameter in any order 
IOM = Slot(Name='IOM') 
MDA = Slot(Name='MDA') 
# to access the values of instances: 
print('CPM name: ',CPM.Name) 
print('CPM Type: ', CPM.Type) 
CPM.Type = 'paa' 
#... 
1

これはそれを行う必要があります。

class Slot: 
    def __init__(*parameters*): 
     self.cpm = CPM.CPM(*sub parameters*) 
     self.iom = IOM.IOM(*sub parameters*) 
     self.mda = MDA.MDA(*sub parameters*) 



class CPM: 
    def __init__(*sub parameters*): 
     self.SerialNumber = *parameter* 
     self.PartNumber = *parameter* 
     self.Name = *parameter* 
     self.Status = *parameter* 
     self.Type = *parameter* 

     print 'CPM:\n\tSerialNumber: '+self.SerialNumber\n\tPartNumber: '+self.PartNumber\n\tName: '+self.Name\n\tStatus: '+self.Status\n\tType: '+self.Type 

class IOM: 
    def __init__(*sub parameters*): 
     self.SerialNumber = *parameter* 
     self.PartNumber = *parameter* 
     self.Name = *parameter* 
     self.Status = *parameter* 
     self.Type = *parameter* 

     print 'IOM:\n\tSerialNumber: '+self.SerialNumber\n\tPartNumber: '+self.PartNumber\n\tName: '+self.Name\n\tStatus: '+self.Status\n\tType: '+self.Type 

class MDA: 
    def __init__(*sub parameters*): 
     self.SerialNumber = *parameter* 
     self.PartNumber = *parameter* 
     self.Name = *parameter* 
     self.Status = *parameter* 
     self.Type = *parameter* 

     print 'MDA:\n\tSerialNumber: '+self.SerialNumber\n\tPartNumber: '+self.PartNumber\n\tName: '+self.Name\n\tStatus: '+self.Status\n\tType: '+self.Type 

slot = Slot.Slot(*parameters*) 
1

次の例は、要求どおりに行う必要があります。クラス初期化子に情報を出力させるのは賢明ではないようです。そのため、main関数で手動印刷が実行されます。これを変更するのは簡単なことではなく、読者のための練習として残されています。

#! /usr/bin/env python3 


def main(): 
    cpm = Widget(12, 34, 'A', True, int) 
    iom = Widget(56, 78, 'B', False, str) 
    mda = Widget(90, 12, 'C', None, bytes) 
    s = Slot(cpm, iom, mda) 
    print(s) 


class Slot: 

    def __init__(self, cpm, iom, mda): 
     self.cpm = cpm 
     self.iom = iom 
     self.mda = mda 

    def __repr__(self): 
     return '{!s}({!r}, {!r}, {!r})'.format(
      type(self).__name__, self.cpm, self.iom, self.mda) 


class Widget: 

    def __init__(self, serial_number, part_number, name, status, kind): 
     self.serial_number = serial_number 
     self.part_number = part_number 
     self.name = name 
     self.status = status 
     self.kind = kind 

    def __repr__(self): 
     return '{!s}({!r}, {!r}, {!r}, {!r}, {!r})'.format(type(self).__name__, 
                  self.serial_number, 
                  self.part_number, 
                  self.name, 
                  self.status, 
                  self.kind) 


if __name__ == '__main__': 
    main() 
関連する問題