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()
这基本上是我的目标。根据我收集到的信息,我可以将 tick 函数更改为__call__
,这将允许我做我想做的事。其他几个答案说这将创建一个对象的新实例,这是否意味着它将使用 self.foo 的内存?还是会创建一个全新的对象,新实例化?或复制self.foo?
还想到了一些可能会或可能不会表现出来的缺点。对于我程序的特定部分,我检查对象是否具有__call__
确定我传递的参数是函数还是变量,并且我真的不认为我希望允许调用它(尽管如此,我认为该类在技术上将是一个函数。)有没有办法区分函数和可调用类?
还有什么其他的东西会让这样做不受欢迎(这是一种pythonic的工作方式吗?)?我的下一个想法是,鉴于__
不能在他们的班级之外使用其他以前缀为前缀的变量,但这里似乎并非如此。