如果 class 里面还有其他函数 ,那call 是怎样被调用的呢
时间: 2024-04-14 08:25:43 浏览: 19
当一个类中同时定义了 `__call__` 方法和其他函数时,`__call__` 方法会在对象被调用时被自动触发。
假设我们有一个类 `MyClass`,其中除了 `__call__` 方法外还定义了其他函数,如下所示:
```python
class MyClass:
def __call__(self, *args, **kwargs):
print("Calling MyClass")
def my_function(self):
print("Calling my_function")
# 创建 MyClass 的实例
obj = MyClass()
# 调用实例对象,触发 __call__ 方法
obj()
# 调用 my_function 方法
obj.my_function()
```
在上面的示例中,我们定义了一个名为 `MyClass` 的类,其中定义了 `__call__` 方法和 `my_function` 方法。当我们创建 `MyClass` 的实例 `obj` 后,我们可以像函数一样调用 `obj()`,这会自动触发 `__call__` 方法并打印出 "Calling MyClass"。另外,我们也可以直接调用 `obj.my_function()` 来触发 `my_function` 方法并打印出 "Calling my_function"。
总之,当一个类中同时存在 `__call__` 方法和其他函数时,调用实例对象时会优先触发 `__call__` 方法。其他函数可以像普通方法一样直接调用。