【问题标题】:Python access a class attribute without initializing?Python无需初始化即可访问类属性?
【发布时间】:2022-01-20 15:50:15
【问题描述】:

我有两个文件,每个文件都包含一个类:

# file1.py
class Class1:
    def __init__(self):
        self.d = dict()

    @property
    def get(self):
        return self.d
    

obj1 = Class1()
obj1.d["a"] = 1
obj1.d["b"] = 2

# file2.py
from file1 import Class1 

class Class2:   
    def print_val(self):
        for i in Class1().get:
            print(i)

我正在尝试从 Class2 中的 Class1 访问属性 d 而不初始化 Class1。以下当前返回一个有意义的空字典。

Class2().print_val()
{}

【问题讨论】:

标签: python oop


【解决方案1】:

您可以在Class1 上创建一个class variable,因为您不想实例化Class1

class Class1:
    d = dict()


Class1.d['a'] = 'A'
Class1.d['b'] = 'B'


class Class2:
    def print_val(self):
        print(Class1.d)


c2 = Class2()
c2.print_val()

输出:

{'a': 'A', 'b': 'B'}

【讨论】:

    【解决方案2】:

    Class1 没有属性d。只有Class1 类型的对象具有d 属性。如果你想打印obj1.d 的成员,你当然可以这样做,但你必须以某种方式将obj1 传递给print_val

    【讨论】:

      猜你喜欢
      • 2012-10-17
      • 2020-05-14
      • 2017-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多