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 не определено

0
Gogo 13 Фев 2021 в 09:50

2 ответа

Лучший ответ

summ1, summ2, summ3 - локальные переменные, определенные в функции add, и они не видны вне этой функции. Если вы замените их на self.summ1, self.summ2, self.summ3, то print(std1.summ1) и т. Д. Будут работать.

0
bb1 13 Фев 2021 в 07:03

Как сказал 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) 
0
kindustrii 13 Фев 2021 в 07:05
66182541