2017-04-06 13 views
-2

コードを変更してcheckboxという関数を使用すると、page.fName、page.lNameまたはpage.emailを真または偽にチェックする機能をどのように変更できますか。あなたはif __name__ == "__main__"ブロックにpage.fName = 'first name'を行うとdunder __bool__を複数クラスに継承する方法

class Text(object): 

    def check(self): 
     if 'path' in self.locator: 
      return False 
     elif 'email' in self.locator: 
      return True 

    __bool__ = check 


class namebox(Text): 

    def __init__(self): 
     self.locator = 'locator path' 

    def is_enaled(self): 
     return self.check() 


class emailbox(Text): 
    def __init__(self): 
     self.locator = 'email' 


class page_module(): 
    fName = namebox() 
    lName = namebox() 
    email = emailbox() 

    def checkbox(self, instance): 
     return bool(instance) 

    print(fName.is_enaled()) 
    print('fName is using is_enabled function=>{}'.format(fName.is_enaled())) 
    print('fName is using check function=>{}'.format(fName.check())) 
    print('fName is using boolean function=>{}'.format(bool(fName))) 
    print('email is using check function=>{}'.format(email.check())) 
    print('email is using boolean function=>{}'.format(bool(email))) 

if __name__ == "__main__": 
    page = page_module() 
    print('check instance bool =>{}'.format(page.checkbox(page.fName))) #expect false, return false 
    page.fName = 'first name' 
    print('fName is =>{}'.format(page.fName)) 
    print('check instance bool =>{}'.format(page.checkbox(page.fName))) #expect false, return true 
+0

あなたは[mcve]であなたの問題を説明できますか? – MSeifert

+0

質問を修正する、私の質問は可能ならば私はちょうどfName、lNameまたは電子メールのロケータがパスまたは電子メールを含むかどうかを確認することができます私はそれに文字列を割り当てる – jacobcan118

答えて

0

、あなたは文字列にバインドされているインスタンス変数とクラス変数fNameをシャドウイングしています。文字列は空ではないので、bool(page.fName)Trueです。

ここで何をしようとしているのか分かりません。おそらく、fNameとその他のクラス変数をdescriptorsにして、page_moduleのインスタンスで行われた代入と値検索を傍受できますか?

+0

はい、私はテキストクラスの記述子を使用しようとします – jacobcan118

+0

'Text'クラス表示されているのはディスクリプタではありません。これは、 '__get__'、' __set__'、 '__delete__'(そして通常は最初の2つまたは3つの両方)の少なくとも1つを要求します。それらのメソッドを作成しても問題のままにしておけば、あなたは何をしているのか分からず、あなたは[mcve]を作る必要があります。あなたがそれらを実装するための助けを求めているなら、期待している振る舞いを明確にする必要があります(ディスクリプタと異なるブール値を得るのは難しいでしょう)。 – Blckknght

+0

ありがとうございます、私は説明を働かせます。私の質問は、私が使用したい3つ以上の機能を持っていればどうなるのでしょうか?とにかく__get__や異なる操作と一致させるには? – jacobcan118

関連する問題