【问题标题】:Access class level attribute of another class?访问另一个类的类级别属性?
【发布时间】:2020-10-10 23:54:47
【问题描述】:

我可以在另一个类 (A) 的方法中访问一个类 (B) 的类级属性,但我不能在 A 类的类级访问该属性。 这个问题可以通过在 A 之后定义 B 来解决,但是为什么会这样,我如何才能在 A 类之后访问保留类 B。

我正在寻找没有类继承且没有在 A 类的 __init__ 内创建 B 类对象的解决方案。

在此处查看代码:

class A:
    a=B.b # This doesn't work
    def __init__(self):
        print(B.b) #This works
class B:
    b=[1,2,3]

【问题讨论】:

  • @alaniwi 是的,我说可以这样解决,但为什么不能用这个命令?
  • 当您尝试实际运行A.__init__ 时,B.b 已经存在。您尝试设置 a=B.b 的情况并非如此。
  • @user2357112supportsMonica 是的,我得到了为什么...谢谢的答案
  • @alaniwi 你能给出示例代码吗?
  • @alaniwi 确切的用例是较低的类是Student 类,它具有类级属性allStudents,它是一个列表。每当创建一个学生对象时,它就会被插入到__init__ 方法内的列表中。现在上层是Department,我想访问这个allStudent列表。

标签: python class oop class-attributes


【解决方案1】:

假设您在定义A 时不需要使用该属性(例如,对于默认参数),您可以稍后分配它

class A:
    def __init__(self):
        print(B.b)
class B:
    b=[1,2,3]
A.a=B.b

甚至

class A:
    def __init__(self):
        print(B.b)
class B:
    A.a=b=[1,2,3]

如果你认为这些类之间的关系如此密切,那么对一个内部的分配比在两者之外的分配更不令人惊讶。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-17
    • 2020-02-18
    • 2019-06-05
    相关资源
    最近更新 更多