0

有没有办法访问init的属性而不将它们分配给 self.attribute = attribute 例如:

class test:
def __init__(self, o = "hi"):
   pass

def f(self):
    print(o)

j = test()
j.f()

我希望打印 __init__argument 而不在构造函数中分配 self.o = o 并在 f 中使用 print(self.o)

我只想节省代码,例如在 f: print(test.init .o) 的打印语句中使用类似的东西类似的东西

4

1 回答 1

0

好吧,虽然这是可能的,但使用 Python 的一些检查功能:

class test:
    def __init__(self, o="hi"):
        pass
    def f(self):
        print(self.__init__.__func__.__defaults__[0])

j = test()
j.f()
# hi

有什么意义呢?

函数参数对于函数来说是本地的,这是有充分理由的:在那里并且在那里使用。

class test:
    def __init__(self, o="hi"):
        self.o = o
    def f(self):
        print(self.o)
于 2021-10-19T11:06:05.490 回答