微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决为什么即使在函数中定义了 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) 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。