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

问题描述

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 也没有打印出来? 好吧,当我尝试打印它们时,在 add 函数中定义了 summ1、summ2、summ3,这段代码给了我错误

错误 NameError: name 'summ1' 未定义

解决方法

summ1,summ2,summ3 是函数 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)