为什么 summ1 即使在函数中定义也没有打印出来?

why summ1 is not getting printed even it is defined in function?

class Student:
    def __init__(self,m1,m2):
        self.m1=m1
        self.m2=m2

    def add(self,s1,s2):
        summ1 = self.m1 + self.m2
        summ2 = s1.m1 + s1.m2
        summ3 = s2.m1 + s2.m2

std1=Student(89,99)
std2=Student(95,99)
std3=Student(95,99)
std1.add(std2,std3)

print(summ1)
print(summ2)
print(summ3)

为什么 summ1 即使在函数中定义也没有打印出来? 好吧,summ1、summ2、summ3 是在添加函数中定义的,当我尝试打印它们时,这段代码给我错误。

错误是 NameError:名称 'summ1' 未定义

summ1summ2summ3是函数add中定义的局部变量,在函数外不可见。如果将它们替换为 self.summ1self.summ2self.summ3,则 print(std1.summ1) 等将起作用。

正如 AnkurSaxena 所说,您无法按照您尝试的方式访问变量。

以下代码应该可以解决您的问题:

class Student:
    def __init__(self,m1,m2):
        self.m1=m1
        self.m2=m2
        self.summ1 = None
        self.summ2 = None
        self.summ3 = None

    def add(self,s1,s2):
        self.summ1 = self.m1 + self.m2
        self.summ2 = s1.m1 + s1.m2
        self.summ3 = s2.m1 + s2.m2

std1=Student(89,99)
std2=Student(95,99)
std3=Student(95,99)
std1.add(std2,std3)

print(std1.summ1)
print(std1.summ2)
print(std1.summ3)