在簡單的情況下,我可以呼叫teacher函式loh:
class Student:
teacher = 'Mrs. Jones'
def __init__(self, name):
self.name = name
def loh():
print(Student.teacher)
loh()
### Mrs. Jones
但是,如果我嘗試下一步這樣做,我會得到“未定義”的錯誤。為什么?
class Student:
class UnderStudent:
teacher = 'Mrs. Jones'
def f():
print(UnderStudent.teacher)
f()
uj5u.com熱心網友回復:
f嘗試UnderStudent在全域范圍內查找,但名稱未在此處定義;它僅在class陳述句的命名空間中定義,將名稱轉換為類屬性。
class Student:
class UnderStudent:
teacher = 'Mrs.Jones'
def f(self):
print(self.UnderStudent.teacher)
# or print(Student.UnderStudent.teacher)
嵌套類在 Python 中很少見,因為與其他一些語言一樣,在同一個檔案中擁有多個頂級類沒有限制。
uj5u.com熱心網友回復:
您不能這樣做,原因與您不能只說不teacher使用selfor Student(Student.teacher是您的第一個示例中的類屬性Student;在您的第二個示例中,Student.UnderStudent是一個Student恰好是類本身)。UnderStudent不存在于全域范圍內,它只存在于 的范圍內Student,就像teacher做的那樣。
您還必須在完全定義f 之后 呼叫,因為在您退出' 定義的范圍之前,它不存在于全域范圍內(因此您不能使用它來查找)。要修復,您可以執行以下操作:StudentStudentStudentUnderStudent
class Student:
class UnderStudent:
teacher = 'Mrs. Jones'
def f(self):
print(Student.UnderStudent.teacher)
# or
print(self.UnderStudent.teacher)
Student().f()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/432215.html
