2017-01-25 16 views
0

私は医療用フォームクラスを持っています。このフォームは、男性と女性の両方に与えられます。私はクラスをインスタンス化するときに男性と女性を区別する必要はありません。性別にかかわらず同じ方法を具体化し、性別にかかわらず同じ質問をすることができればいいと思います。しかし、それを実現するプログラムは、男性が妊娠しているかどうかを尋ねるのは馬鹿ですが、その質問をしないでも、それは無関係な質問ではなく、それをスキップして印刷します。 これは私が持っている基本的なコードです。Python 3.4継承

if male: 
    form = medForm("Bill") 
    form.MedHistory.isSmoking() 


if female: 
    form = medForm("Sarah") 
    form.MedHistory.isSmoking() 
    form.MedHistory.isPregnent() 


class maleSection(): 
    def isSmoking(self): 
    #some code here exactly same as female, so create a base class later 

class femaleSection(): 
    def isPregnent(self): 
    #some code here 

    def isSmoking(self): 
    #some code here exactly same as male, so create a base class later 

class medForm(maleSection, femaleSection): 
    def _init_(self, nameOfCustomer): 
     #At the moment not sure if I need anything here 

これらの2つのif文は醜いです。これを処理する最良の方法は何ですか?また、私はスーパーを使用して聞いたことが難しいかもしれないので、可能であれば私はスーパーを使用しないようにして、それを簡単に保ちたいと思います。これはWin7、Python 3.4で実行されています。 sys.version_info(メジャー= 3、マイナー= 4、マイクロ= 3、リリースレベル= '最終'、シリアル= 0)

ご協力いただきありがとうございます。

+0

最初に:もし可能であれば、Python 3.6をインストールしてください。古いバージョンを使う理由はありません。 – jsbueno

+0

Secon: 'super'を使うのは難しいことではありません。それを避けようとしないでください。 – jsbueno

+0

助けてくれてありがとうございますが、私はアップグレードできません。あなたが私の問題を解決する方法についてスーパーに例を挙げることができれば、本当にうれしいでしょう。 – usustarr

答えて

1

このタイプの問題については、継承を利用することをお勧めします。後で何かを変更する必要がある場合は、多くの時間を節約できます。

はこのような何かを試してみてください:

class patientSection(): 
     def isSmoking(self): 
      #the code here is the same for both male and female 

    class maleSection(patientSection): 
     #no code here, since we have access to isSmoking already 

    class femaleSection(patientSection): 
     #again, we have access to isSmoking 
     def isPregnant(self): 
      #something here 

あなただけの性別中立的な質問をしたい場合は、ちょうどpatientSectionのインスタンスを宣言することができます。ただし、isPregnantメソッドを使用するには、femaleSectionを使用する必要があります。

+0

A. McKernanは問題と問題解決の違いはありません。どうもありがとうございました。私は本当にPythonがこれを理解するためのいくつかの方法を持っていることを期待していました。 – usustarr

+0

@usustarr問題はない、私は助けることができてうれしい!がんばろう! –