【问题标题】:How can I pass a variable from one class to another in Python?如何在 Python 中将变量从一个类传递到另一个类?
【发布时间】:2022-01-05 12:35:43
【问题描述】:

我正在创建一个小型库存管理应用程序,我想从 ClassB 中的 ClassA 访问一个变量

ClassA(Screen):
     def test1(self):
          self.username = "Tonny"

ClassB(Screen):
     def test2(self):
          print(ClassA.test1.username)

此代码不起作用,我已经尝试过这样的:

ClassA(Screen):
     def test1(self):
          self.username = "Tonny"
          return self.username

ClassB(ClassA,Screen):
     ClassA = ClassA()
     def test2(self):
          print(ClassA.test1())

第二段代码应该可以工作,但由于屏幕管理器的原因我不能使用它,当我在类中放入另一个参数时它会停止工作。

有人知道我该怎么做吗?

【问题讨论】:

  • ClassA.test1() 尝试在不首先创建ClassA 实例的情况下运行该方法,这仅在您将其设为@classmethod@staticmethod 时才有效。您希望ClassA().test1() 创建一个类实例并运行它的方法。如果您只是学习基础知识,那么所有这些似乎都是多余的。

标签: python python-3.x kivy


【解决方案1】:

您可以通过将ClassA 的实例发送到ClassB 以便ClassB 访问它:

class ClassA(object):
    def __init__(self):
        self.username = "Tonny"
        
class ClassB(ClassA):
    def __init__(self, class_a):
        self.username = class_a.username

    def getPassedName(self):
        return self.username

object1 = ClassA()
object2 = ClassB(object1)
username = object2.getPassedName()
print(username)

更多信息请查看question

【讨论】:

  • 我真的不能这样做,因为我只在类内工作,而类外的代码在类内不起作用。
  • @ATEK0 你没有在你的程序要求中提到这一点。我提供的解决方案是面向对象编程中类之间传递共享变量的标准方式。
【解决方案2】:

self.x 表示变量 x 只在类定义中起作用。 试试这个:定义一个类 A(object),在 init() 之前定义 x=1

class A(object):
    x = 1
    __init__(self)
    .....

你可以像 A.x. 一样称呼 x。

【讨论】:

  • 这行得通!也许我的错误是没有定义 init()...init() 有那么重要吗?
  • 这实际上不是将变量从一个类传递到另一个类的正确方法。
  • @Oghli 成功了,您如何回答正确的方法而不是燃烧?
  • init 用于定义初始类变量或值。因此,您可以使用 init 声明类变量以与其他类进行交换。也许你不会使用 init,你可以按照描述的方式与其他类共享变量。
  • @ATEK0 并非所有工作都被认为是正确的并且符合编写高效和干净代码的标准。
猜你喜欢
  • 1970-01-01
  • 2015-10-23
  • 1970-01-01
  • 1970-01-01
  • 2014-01-03
  • 2013-02-08
相关资源
最近更新 更多