2017-07-18 15 views
-1

クラス関数が呼び出されたときにオブジェクトを直接作成することはできますか?Python OOPで別のオブジェクト作成をスキップして、クラス関数が呼び出されたときにオブジェクトを作成することはできますか?

LONG_PRESS='LONG_PRESS' 

class Press(object): 

"""docstring for Press""" 

    def __init__(self, nr, T): 
     super(Press, self).__init__() 
     self.nr = nr 
     self.T = T 

    def Button(self): 
     if self.T == 'LONG_PRESS': 
     return "Button[BUTTON"+str(self.nr)+"].Press(T_PRESS_LONG);" 

print(Press.Button(2,LONG_PRESS)) 

私はオブジェクトが作成された部分をスキップします:事前に

Press1=Press(2,LONG_PRESS) print(Press1.Button)

ありがとう!

+1

私はあなたが 'Press(2、LONG_PRESS).Button()'の後にいると思います。いずれにしても、インスタンスを名前に変換する必要はありませんが、通常はそうすることが役に立ちます。 –

+0

'(...)ボタンを押す()' ... ?! 'Button'に' self.T'が必要な場合、 'Press'をインスタンス化せずにどうしたらいいのでしょうか? – deceze

+0

はい、それは私が後にしていることです。大いに感謝する! P.P.私はなぜ誰かが私のポストをdownvoteするだろう、私はこれを知らなかった、そして今私は知っていた理解していない。私はpythonの初心者です、そして、このサイトは私をたくさん助けます。 –

答えて

2

それはあなたが達成することを期待まさには不明だが、あなたはこのようにそれを行うことができます1行のコードButtonをコールする場合:

Press(2, LONG_PRESS).Button(...)` 

あなたがButtonを定義した方法で、単にあなたは、Buttonself.Tに依存しているため、クラスのインスタンスを最初に作成する必要があります。 なしでself.Tにアクセスする方法はありません。オブジェクトのインスタンスを作成せずにselfを取得する方法はありません。

+0

はい、私が言ったように、私は関数を呼び出し、インスタンスを1行で初期化したいと考えました。あなたの時間をありがとう! –

+0

ボタンを定義する他の方法はありますか? –

+0

@MihaiBerci:はい、あなたの 'Button'メソッドを定義する方法はたくさんあります。例えば、単純な関数は 'def Button(nr、T):...'を実行します。 –

関連する問題