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 не определено
2 ответа
summ1
, summ2
, summ3
- локальные переменные, определенные в функции add
, и они не видны вне этой функции. Если вы замените их на self.summ1
, self.summ2
, self.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)
Похожие вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.