Статья Автор: Омарбек Нұр-Мұхаммед

Примеры

Примеры создания классов

В этом примере внутри класса описывается свойство color:

class Phone:
    color = (0, 0, 0)


p1 = Phone()
p2 = Phone()

print(p1.color)  # (0, 0, 0)
print(p2.color)  # (0, 0, 0)

Свойство или атрибут - это переменная, объявленная внутри класса.

 

У разных экземпляров класса значения свойств могут меняться:

class Phone:
    color = (0, 0, 0)


p1 = Phone()
p2 = Phone()

p3 = Phone()
p3.color = (255, 0, 0)

print(p1.color)  # (0, 0, 0)
print(p2.color)  # (0, 0, 0)
print(p3.color)  # (255, 0, 0)

 

Метод - это функция, объявленная внутри класса:

class Phone:
    color = (0, 0, 0)

    def output():
        print(color)


p1 = Phone()
p2 = Phone()

p3 = Phone()
p3.color = (255, 0, 0)

p1.output()  # TypeError: output() takes 0 positional arguments but 1 was given
p2.output()
p3.output()

В этом примере программа завершается с ошибкой. У каждого экземпляра значение свойства color может отличаться. При выполнении print(color) возникает вопрос: какое значение нужно вывести? Нужно сделать так, чтобы выводился цвет конкретного объекта.

 

Чтобы избежать ошибки, нужно конкретный объект передать в функцию в качестве параметра:

class Phone:
    color = (0, 0, 0)

def output(p):
    print(p.color)


p1 = Phone()
p2 = Phone()

p3 = Phone()
p3.color = (255, 0, 0)

output(p1)  # (0, 0, 0)
output(p2)  # (0, 0, 0)
output(p3)  # (255, 0, 0)

Переменная p в функции output() указывает на экземпляр класса Phone. Такой способ позволяет одной функции работать с разными объектами.

 

Чтобы метод работал со свойствами того экземпляра, из которого он был вызван, нужно, чтобы метод принимал параметр, указывающий на объект - точно так, как это делает функция output().Для этого используется ключевое слово self (свой):

class Phone:
    color = (0, 0, 0)

    def output(self):
        print(self.color)


p1 = Phone()
p2 = Phone()

p3 = Phone()
p3.color = (255, 0, 0)

p1.output()  # (0, 0, 0)
p2.output()  # (0, 0, 0)
p3.output()  # (255, 0, 0)
Пропустить Навигационные Ссылки.
Чтобы оставить комментарий нужна авторизация
Печать