【问题标题】:I need to access variables across files, what should I do?我需要跨文件访问变量,我该怎么办?
【发布时间】:2021-10-05 10:24:43
【问题描述】:

如何让MyClassB 访问dict k 中的dict k?

我有两个文件,第一个文件是MyClassB.py,内容如下:

class MyClassB:
    print('This is MyClassB!')

    @classmethod
    def run(cls):
        for _i in cls.codes:
            print(k[_i])  #  What code should I write here to access k defined in MyClassAC?

#If k is relatively large, will it affect performance if it is written in the class attribute?

主文件MyClassAC.py的内容如下:

from MyClassB import MyClassB


class MyClassA:
    codes = range(3)
    print('This is MyClassA!')


class MyClassC(MyClassB, MyClassA):
    print('This is MyClassC!')
    pass


k = {}
for i in MyClassC.codes:
    k[i] = MyClassC

MyClassC.run()

【问题讨论】:

  • 我认为这不是您的真实代码,而是一个示例?很难理解您实际上要对名为 MyClassA、MyClassC 等的类做什么......无论如何,这看起来像是滥用函数可能会做的类。
  • 变量本身需要以全局变量的形式在类的范围内,而不是局部变量,如果我正确理解您的问题,则应将其写入类中。这可以通过使用 self 关键字来完成。
  • @AKX 当然,我的代码只是一个例子。
  • @AidanDonnelly 如果存在于属性中,则需要存在于类属性cls中,而variable k比较大。这对性能有影响吗?

标签: python class methods


【解决方案1】:

您可以将k 传递给run() 方法:

class MyClassB:
    print('This is MyClassB!')

    @classmethod
    def run(cls, k):
        for _i in cls.codes:
            print(k[_i])

并且调用可以这样修改:

k = {}
for i in MyClassC.codes:
    k[i] = MyClassC

MyClassC.run(k)

【讨论】:

  • 这个方法可以达到我的目的。
猜你喜欢
  • 2013-11-14
  • 2020-12-12
  • 1970-01-01
  • 1970-01-01
  • 2019-08-25
  • 2022-11-16
  • 2020-11-17
  • 2021-10-01
相关资源
最近更新 更多