Предупреждение: Это длинный учебник (также, это мой первый урок, так что, вероятно, это не будет хорошо:)
Программирование, ориентированное на объект, ООП, является способом моделирования объектов, оно полезно для моделирования. Перед объектно -ориентированным программированием были написаны длинные части кода. Функции имеют свои сильные стороны, но они, как правило, делают ваш код похожим на хорошую чашу спагетти .
Вкусно, но никто не может прочитать его, потому что никто не может прочитать Спагетти Анкет
Тем не менее, еще один способ кода появился, этот метод был не похож на спагетти, а скорее как аккуратные, организованные Хлебные палочки Анкет
Теперь давайте представим, что мы являемся кухонной компанией. Мы также отличные программисты, поэтому мы пишем какой -то код, чтобы помочь с процессом создания кухни. Нам нужно придумать общий шаблон для кухни. Мы должны Тип (Типинг важен, не копируйте и не вставляйте) Этот код в.
class GenericKitchen: def __init__(self, numOfApplicances, kitchenSize): self.numberOfApplicances = numOfApplicances self.kitchenSize = kitchenSize # kitchenSize is a tuple (width, height) print("I have been inited") def getInventory(self): kitchenWidth = self.kitchenSize[0] kitchenHeight = self.kitchenSize[1] print(f"Number of appliances: {self.numberOfApplicances}") print(f"Size of kitchen: {kitchenWidth} by {kitchenHeight}")
Авария:
class GenericKitchen:
Это просто используется, чтобы сказать Python, что Geneickitchen
это класс
def __init__(self, numOfAppliances, kitchenSize): self.numberOfAppliances = numOfAppliances self.kitchenSize = kitchenSize print("I have been inited")
__init__
Метод (a.k.a функция) – это метод Dunder ( d uble под счет). Метод Dunder – это тип функции, которая позволяет создавать класс для взаимодействия со встроенными функциями, однако это __init__
Метод важен, потому что он позволяет. я
сообщает Python, что эта переменная является частью Geneickitchen
Класс (подробнее об этом позже).
def getInventory(self): kitchenWidth = self.kitchenSize[0] kitchenHeight = self.kitchenSize[1] print(f"Number of appliances: {self.numberOfApplicances}") print(f"Size of kitchen: {kitchenWidth} by {kitchenHeight}")
Получить инвентарь – это функция, которая наследует от я
и поэтому наследует все переменные от себя. Кухня Whidth
и KitchenHeight
являются локальными переменными, что означает, что их нельзя использовать вне функции.
Чтобы позвонить в класс, введите:
kitchenDimensions = (100, 100) # ^^^^^^^^^^^^^^^ # Don't use such long names, they are a pain to type normalKitchen = GenericKitchen(5, kitchenDimensions) >>> I have been inited
Вам может быть интересно, почему Python Print Я был подготовлен
На экране, если вы не называли функцию. Ну, причина, по которой в том, что __init__
Метод – это метод Дандер, его функция состоит в том, чтобы сделать что -то, когда называется класс. Это похоже на
number = list("hello") print(number) >>> ["h", "e", "l", "l", "o"]
Почему, потому что список
это класс. Список __init__
Метод генерирует список и возвращает его в число переменных.
Себя
Я – очень важная концепция для понимания (понимайте себя тоже:)
я
это контейнер для всех переменных, разделенных классом. Например:
class RandomClass(): def __init__(self): self.name = "Jim" self.printName() self.name = "Tomi" def printName(self): print(self.name) def setAge(self): self.age = 14 rand = RandomClass() rand.printName() >>> Jim Tomi
Что происходит, так это то, что с каждым определением класса, я
определяется с этим. себя
Затем становится контейнером для всего, что объявлено в классе, который разделяется среди класса. Когда printName
принимает аргумент себя
, он принимает все переменные и функции, связанные с я
такие как Self.age
и Self.Setage
. Когда мы передаем класс переменной, происходит то, что я
передается с ним, я
тогда равняется имени переменного тока
Занятия важны для того, чтобы узнать как модели, так и для более чистого кода. Код хлебного палочка лучше, чем код спагетти (я только что сделал код хлебного палочка). Классы определены с использованием класс класса
. я
где содержится все экземпляры класса.
Оригинал: “https://dev.to/tominekan/python-basic-object-oriented-programming-2587”