如何知道从哪个 class 实例调用函数来访问实例属性

how to know from which class instance a function is called to access the instance attributes

我想访问调用函数的 class 实例的属性:

例如:

class A:
    def a(self):
        return B.q

class B:
    q=0
    def b(self):
        M=A()
        return M.a()
c=B()

c.q = 6

print(c.b())

输出将是 0 但我希望它打印 class B 实例 cq 属性,它具有值 6

将实例作为参数传递。

class A:
    def a(self, b):
        return b.q

class B:
    q=0
    def b(self):
        M=A()
        return M.a(self)
c=B()

c.q = 6

print(c.b())

定义一个初始化方法,以便您可以使用实例属性而不是 class 变量

class A:
    def a(self):
        return B.q

class B:
    def __init__(self):
        self.q = 0

    def b(self):
        M=A()
        return M.a()
c=B()

c.q = 6

print(c.b())

这似乎是非常糟糕的程序设计。你想用这个完成什么?

  1. 您有一个 class 属性和一个实例属性 - 在 class 中 - 同名 q。这会使您的代码难以遵循和维护。
  2. 你有方法 B.b 实例化 class A 的实例。你立即调用 A.a,它被分配了从 class 返回实例属性和对象的可疑任务。 =35=]B.

清理你的设计。

  • 对每个 class.
  • 适当地使用 init
  • 设计您的 class 方法,使其与 class 的实例 的特征相适应。您的问题强烈表明您的设计在您的脑海中和代码中都还不清晰。