class Foo(object):
def tick(self):
print("something")
class Bar(object):
def __init__(self):
self.foo = Foo()
def tick(self):
#Here's what I do....
self.foo.tick()
#here's what my goal would be
self.foo()
b = Bar()
b.tick()
それが本質的に私の目標です。私が集めたものから、ティック関数をに変更することができ__call__
、それによって私がやりたいことができるようになります。他のいくつかの回答は、これがオブジェクトの新しいインスタンスを作成すると言いましたが、それは self.foo のメモリを使用することを意味しますか? それとも、新しくインスタンス化されたまったく新しいオブジェクトを作成しますか? またはself.fooのコピーを作成しますか?
また、これにはいくつかの欠点があり、それが現れる場合と現れない場合があります。__call__
プログラムの特定の部分について、渡した引数が関数なのか変数なのかを判断するために、オブジェクトにとはいえ、クラスは技術的にはその時点で関数になると思います。)関数と呼び出し可能なクラスを区別する方法はありますか?
これを望ましくないものにするものは他にありますか? __
私の次の考えは、 cant という接頭辞が付いた他の変数をクラス外で使用できないことを考えると、そうではないようです。