The class properties __name and __rollNumber look like class variables. How does Python tell they are instance variables (not class variables).
1 Like
Yeah, i don’t think those first two are actually refering to the instance objects, but are actually private class variables. if you run
class Student:
__name = “X”
__rollNumber = None
def setName(self, name):
self.__name = name
def getName(self):
return self.__name
def setRollNumber(self, rollNumber):
self.__rollNumber = rollNumber
def getRollNumber(self):
return self.__rollNumber
def setNameC(self,n):
Student.__name = n
def getNameC(self):
return Student.__name
demo1 = Student()
demo1.setName("Alex")
print("Name:", demo1.getName())
demo1.setRollNumber(3789)
print("Roll Number:", demo1.getRollNumber())
demo2 = Student()
print("Class Name:", demo2.getNameC())
demo2.setNameC("Y")
print("Class Name:", demo1.getNameC())
You will see that its not referring to the instance name, AND you can change the class variable with the class setter
Course: Educative: Interactive Courses for Software Developers
Lesson: https://www.educative.io/courses/learn-oop-in-python/YM6mmqwQEXA