class Student:
    insti = "IITM"

    def __init__(self, rollno, hostel, facad):
        print("inside Student.__init__ constructor")
        self.__rollno = rollno
        self.__hostel = hostel
        self.facad  = facad

    def getHostel(self):
        return self.__hostel

    def changeHostel(this, newhostel):
        this.__hostel = newhostel

    def getFacad(self):
        return self.facad

    def __str__(self):
        return f'''<h1>{self.__rollno}</h1>
                  I am a student of {self.insti}.<br>
                  I stay in the brand new hostel <i>{self.__hostel}</i>.<br>
                  My faculty advisor is {self.facad}.<p>
               '''
kavish = Student("CS25B061", "Mandakini", "KC")
print(kavish.getHostel())
print(kavish)   # can print an object, calls __str__ method

kavish.changeHostel("Kaveri")
print(kavish.getHostel())

kavish.facad = "Madhu"
print(kavish.getFacad())

kavish.__hostel = "Pampa"   # does not change the hostel
print(kavish.getHostel())
