"Name error" en ejercicio de programacion orientada a objetos

hola buenas, tengo el siguiente ejercicio, es un problema basico de poo, en este se me pide que haga uso de getters y setters, el problema está aquí, en el momento que intento cambiar el valor de uno de los atributos de un objeto (entrar en el setter) me salta el “name error” y no entiendo el porque ya que me sale el “self is not defined” cuando en todo momento lo he ido escribiendo

adjunto el ejercicio:

class Alumno():
“”" Clase Alumno
Con esta clase nos permite saber el nombre del alumno y su respectiva nota"“”

def __init__(self, nombre=None, nota=None):        # constructor de clase,  dejamos los atributos vacíos
    self.__nombre = nombre               # en este ejercicio, le ponemos el doble guión para permitir "privar" el atributo
    self.__nota = nota
    print("El alumno {} se ha creado con éxito".format(nombre))   # informa que el alumno se ha creado con éxito

@property
def nombre(self):
    print("Dentro del GETTER 1")
    return self.__nombre

@nombre.setter
def nombre(Self,nuevoNombre):
    print("Dentro del SETTER 1")
    self.__nombre = nuevoNombre 
    
@property
def nota(self):
    print("Dentro del GETTER 2")
    return self.__nota

@nota.setter
def nota(Self,nuevaNota):
    print("Dentro del SETTER 2")
    self.__nota = nuevaNota
  
def calificacion(self):                   # a partir de la nota, indica aprobado o suspenso (notas sobre 10)
    if self.nota >= 5:
        print("{} ha aprobado, ya que tiene un {}".format(self.nombre,self.nota))
    else:
        print("{} ha suspendido, ya que tiene un {}".format(self.nombre,self.nota))


def __str__(self):
    return "El alumno {} tiene una nota de {}".format(self.nombre,self.nota)    # permite ver la información (Atributos) del alumno

experimentación

creación de alumnos

a1 = Alumno(nombre=“Ana”, nota=7)
a2 = Alumno(nombre=“Carlos”, nota=3)
a3 = Alumno(nombre=“Lucía”, nota=9)

acceso a las clases mediante el uso de getter

print(a1.nombre)
print(a2.nombre)
print(a3.nota)

canvio de variable de los atributos mediante setter

a2.nombre = “David”
print(a2)
a3.nota = 5
print(a3)

ahora, una vez ejecutado me sale lo siguiente:

El alumno Ana se ha creado con éxito
El alumno Carlos se ha creado con éxito
El alumno Lucía se ha creado con éxito
Dentro del GETTER 1
Ana
Dentro del GETTER 1
Carlos
Dentro del GETTER 2
9
Dentro del SETTER 1

NameError Traceback (most recent call last)
Cell In[1], line 56
53 print(a3.nota)
55 # canvio de variable de los atributos mediante setter
—> 56 a2.nombre = “David”
57 print(a2)
58 a3.nota = 5

Cell In[1], line 20, in Alumno.nombre(Self, nuevoNombre)
17 @nombre.setter
18 def nombre(Self,nuevoNombre):
19 print(“Dentro del SETTER 1”)
—> 20 self.__nombre = nuevoNombre

NameError: name ‘self’ is not defined

el error sale cuando entro en el setter pero no entiendo el por que