Python немного отличается от других языков, когда дело касается функций класса.
Если вы определяете переменную внутри класса, это переменная stati c, которая принадлежит классу, как будто класс был объектом. Потому что класс является объектом. Это python Dict.
Когда вы создаете экземпляр класса, python копирует Dict и дает ему новое имя.
Для создания переменных экземпляра вам необходимо прикреплять их к экземпляру Dict, а не к классу Dict.
Чтобы избежать путаницы между этими двумя Dict python, введено ключевое слово «self». Когда python вызывает функцию в экземпляре Dict, он передает копию экземпляра Dict в функцию в качестве первого параметра.
Таким образом, чтобы изменить переменную внутри функции, вам необходимо сделать следующее:
class bicycle:
numwheels = 2
def __init__(self):
# This is what python uses as the constructor
self.numwheels = 3
def changeInstanceWheels(self, wheelnum):
self.numwheels = wheelnum
bike = bicycle()
print(bicycle.numwheels) # prints 2
print(bike.numwheels) # prints 3
bike.changeInstanceWheels(5)
print(bicycle.numwheels) # still prints 2 because this is the static variable
print(bike.numwheels) # prints 5