有两个类:class A和class B。在class A中,我想调用class B中的方法。同时,在class B中,我想调用class A中的一个方法。
时间: 2024-01-21 21:20:11 浏览: 111
可以使用对象引用来实现这个目的。在class A中创建一个class B对象的引用,并将其传递给class A的构造函数。这样,class A就可以调用class B中的方法了。
在class B中,同样可以创建一个class A对象的引用,并将其传递给class B的构造函数。这样,class B也可以调用class A中的方法了。
以下是示例代码:
```python
class A:
def __init__(self, b):
self.b = b
def method_a(self):
print("This is method A")
self.b.method_b()
class B:
def __init__(self, a):
self.a = a
def method_b(self):
print("This is method B")
self.a.method_a()
b = B(A(b=None))
a = A(b=b)
a.method_a()
```
输出:
```
This is method A
This is method B
This is method A
This is method B
```
相关问题
有两个类分别位于不用两个不同的.py文件:class A和class B。在class A中,我想调用class B中的方法。同时,在class B中,我想调用class A中的一个方法。
这种情况下,你需要在class A中实例化class B对象,并将其作为参数传递给class A中需要调用的方法。同样,在class B中也需要实例化class A对象,并将其作为参数传递给需要调用的方法。
以下是一个示例代码:
```
# file1.py
class A:
def __init__(self, b_obj):
self.b_obj = b_obj
def method_a(self):
print("Method A called")
self.b_obj.method_b()
# file2.py
class B:
def __init__(self, a_obj):
self.a_obj = a_obj
def method_b(self):
print("Method B called")
self.a_obj.method_a()
```
在这个示例中,class A需要调用class B中的方法method_b(),因此在class A的构造函数中将class B对象b_obj作为参数传递进来。在method_a()中,我们首先调用自身的方法,然后通过b_obj调用class B中的方法method_b()。
同样的,class B需要调用class A中的方法method_a(),因此在class B的构造函数中将class A对象a_obj作为参数传递进来。在method_b()中,我们首先调用自身的方法,然后通过a_obj调用class A中的方法method_a()。
请注意,为了使这个示例代码正常工作,你需要将这两个类定义在两个不同的.py文件中,并在需要使用它们的.py文件中使用以下代码导入它们:
```
from file1 import A
from file2 import B
```
python中,class A 导入到了class B,A怎么调用B的非静态方法
在class A中,如果B已经被正确导入并且实例化了,那么可以通过创建B的实例对象来调用B中的非静态方法。需要注意,非静态方法通常都是实例方法,需要实例化B类才能调用。
例如:
```python
# B类中的方法
class B:
def non_static_method(self):
print("This is a non-static method in class B.")
# A类中导入B并调用其方法
from B import B
class A:
def call_method(self):
b = B()
b.non_static_method()
```
在上面的代码中,我们首先导入B类。然后在A类中,我们通过创建B的实例对象`b`,并调用`b.non_static_method()`来调用B中的非静态方法。
需要注意的是,静态方法和类方法可以直接通过类名调用,但非静态方法必须通过类的实例对象来调用。