无法访问 Python 中的内部 class 函数

Trouble accessing function of inner class in Python

我是 python 的新手 我正在学习如何使用 inner/nested 类。 我写了下面的代码。 我无法访问 display().

class Person:
    def __init__(self,name):
        self.name=name
        self.dob=self.DOB
    class DOB:
        def __init__(self,dd,mm,yyyy):
            self.dd=dd
            self.mm=mm
            self.yyyy=yyyy
        def display(self):
            return(self.dd)

p=Person('Surya')
p.DOB(11,22,3333)
p.DOB.display()

因为您的 display 函数在 class 中,您需要在尝试使用它之前初始化 class。你确实初始化了 class 但你没有在任何地方保存这个对象。

将最后几行更改为:

p = Person('Surya')
pDOB = p.DOB(11,22,3333)
print(pDOB.display())

你的 p.DOB 将构造一个新的 DOB 对象,但随后你将那个对象扔掉,因为你没有将该对象存储在变量中,等等。例如,你可以使用变量存储返回的 DOB 对象,例如:

p = Person('Surya')
<b>dob =</b> p.DOB(11,22,3333)
<b>dob</b>.display()  # will return 11

通过使用 p.DOB,您可以得到对内部 DOB class 的引用,如果您随后调用 .display(),则意味着没有 self参数,因此错误。