Рубрики
Без рубрики

Нежное введение в классы Python для новичков

Python – это объектно-ориентированный язык программирования (OOP), это очень популярное программирование Paradigm An … Tagged с Python, OOP.

Python – это объектно-ориентированный язык программирования (OOP), это очень популярное программирование парадигмы и является одним из наиболее эффективных подходов к написанию программного обеспечения.

Почти все в Python – это объект, со своими свойствами и методами. Поэтому при решении проблем реальных проблем вы создаете объекты на основе классов, которые также известны как зрелищность (экземпляры).

Класс определяется как чертеж или описание объекта, и он создан с классом ключевого слова.

Позвольте мне проиллюстрировать, как выглядит класс.

Создайте класс по имени торт, так что вы знаете о тортах, вы знаете, мы используем муку, чтобы сделать тесто и духовку, чтобы нагреть тесто. Итак, мы создаем атрибут по имени муку и духовку. Когда мы хотим выпечить торт, мы предприговариваем печь и смешайте нашу муку с другими ингредиентами, поэтому мы создаем метод, называемый Preheat_oven и Mix_dough.

class Cake:
    def __init__(self, flour, oven):        
        """Initialize attributes."""
        self.flour = flour
        self.oven = oven

    def preheat_oven(self):
        """create a method"""
        return f"Pre-heat {self.oven} to 350 degrees"
    def mix_dough(self):
        return f" Mix together {self.flour}, cocoa powder, baking powder" 

Теперь, когда наш класс Cake создан, мы бы создадим объект (экземпляр) класса, называемого cont_cake.

pound_cake = Cake()

Здесь есть много, но не волнуйтесь, я сломаю это с постом.

1. Метод init ()

Все классы имеют функцию под названием init (), который всегда выполняется, когда мы создаем новый экземпляр в зависимости от класса, и он используется для назначения значений объекта свойства, как приведен выше, мы использовали init () Функция для назначения значений для духовки и муки. Всякий раз, когда мы хотим сделать экземпляр из класса Pizza, мы предоставим значения только для последних двух параметров муки и духовки.

2. Самометр

Определенные две переменные (духовка и мука) у каждого есть префикс я. i. Любая переменная, префиксированная с SAE, указывает, что переменная доступна для каждого метода в классе. II. Он используется для доступа к переменным, которые принадлежат классу.

3. Методы

Классы могут иметь методы, определенные для добавления функций. Методы являются функциями, которые принадлежат объекту. Помните, что все методы имеют себя как их первый параметр

def preheat_oven(self):
    pass

4. Доступ к атрибутам и методам вызова.

Чтобы получить доступ к атрибутам экземпляра, вы используете точечную обозначение. Мы создали экземпляр класса Pizza под названием CONT_CAKE, поэтому для доступа к муку атрибута мы выполняем следующее.

pound_cake = Cake("wheat flour","oven")
print(pound_cake.flour)
wheat flour

После того, как мы создали экземпляр из классового торта, мы можем использовать точечную обозначение, чтобы вызвать любой метод, определенный в торте.

print(pound_cake.preheat_oven())
print (pound_cake.mix_dough())

#We can also create multiple instances too
sponge_cake =Cake('pastry flour', 'Roaster oven')
chiffon_cake = Cake ('whole wheat flour', 'Roaster oven')
print(chiffon_cake.mix_dough())

Pre-heat oven to 350 degrees
 Mix together wheat flour, cocoa powder, baking powder
 Mix together whole wheat flour, cocoa powder, baking powder

5. Изменение значения атрибута через метод

Может быть полезно иметь методы, которые обновляют определенные атрибуты для вас. Вместо того, чтобы получить доступ к атрибуту напрямую, вы передаете новое значение для метода, который обрабатывает обновление внутренне.

Напишите класс, который позволяет пользователям выбрать свои любимые начинки для пиццы и любимые виды корочки из приложения для пиццы. Теперь магазин работает промо при заказе пиццы Margherita, вы можете заказать бесплатный напиток.

Измените атрибут напитка через метод order_margherita

class Pizza:
    def __init__(self, veggies, toppings, crust, oil):
        self.veggies = veggies
        self.toppings = toppings
        self.crust = crust
        self.oil = oil

    def order_margherita(self, drink):
        """modify attribute value here"""
        self.drink = drink
        return f"You ordered for {self.crust} pizza with the {self.veggies},{self.toppings},{self.oil} toppings and you have gotten a free {drink}"



margherita_pizza = Pizza( "tomatoes", "mozzarella" ,"thick" ,"extra virgin olive oil.")
print(margherita_pizza.order_margherita("coke"))

You ordered for thick pizza with the tomatoes, mozzarella, extra virgin olive oil. toppings and you have gotten a free coke.

6. Присвоение значения по умолчанию для атрибута

Когда вы назначаете значение атрибута по умолчанию, вам не нужно включать параметр для этого атрибута.

Все еще используя наш класс Pizza, позвольте мне назначить значение по умолчанию для атрибута мяса и дневника.

class Pizza:
    def __init__(self, veggies, toppings, crust, oil):
        self.veggies = veggies
        self.toppings = toppings
        self.crust = crust
        self.oil = oil
        self.meat = "beef"
        self.dairy = "cheese"

    def order_margherita(self, drink):
        """modify attribute value here"""
        self.drink = drink
        return f"You ordered for {self.crust} pizza with the {self.veggies},{self.toppings},{self.oil} toppings and you have gotten a free {drink}"

    def order_pepperoni(self):
        return f"You ordered {self.crust} pizza topped with {self.meat} and {self.dairy}"

order_pepperoni = Pizza( "chilli","oregano," ,"thin" ,"extra virgin olive oil.")
print(order_pepperoni.order_pepperoni())
You ordered thin pizza topped with beef and cheese

Наследование позволяет нам определять класс, который наследует все методы и свойства другого класса.

Родительский класс – это класс, наследуемый от, также называемый базовым классом. Детский класс – это класс, который наследует от другого класса.

Синтаксис выглядит так

class ChildClass(ParentClass):
    pass

Создайте детский класс с именем orderpizza, который наследует свойства и методы из класса Pizza

class OrderPizza(Pizza):
   pass

order_pizza = OrderPizza( "chilli","oregano","thin" ,"soya bean oil.") #create an instance
print(order_pizza.order_pepperoni())   #call a method

You ordered thin pizza topped with beef and cheese

Добавление метода init () и Super () в детский класс.

я. Когда вы добавляете init () Функция, детский класс больше не будет наследует родитель init () Функция, в порядке Чтобы сохранить наследство родителей init () Функция, добавьте вызов на родитель init () Функция:

class OrderPizza(Pizza):
    def __init__(self, veggies, toppings, crust, oil):
        Pizza.__init__(self, veggies, toppings, crust, oil)

pizza = OrderPizza( "tomatoes", "oregano" ,"thin","extra virgin olive oil.")
print(pizza.order_margherita("coca-cola"))

You ordered for thin pizza with the tomatoes, oregano, extra virgin olive oil. toppings and you have gotten a free coca-cola

II. Python также имеет функцию Super (), которая заставит детский класс наследует все методы и свойства со своего родителя.

class OrderPizza(Pizza):
    def __init__(self, veggies, toppings, crust, oil):
        super().__init__(veggies, toppings, crust, oil)
pizza = OrderPizza( "tomatoes", "oregano" ,"thin","extra virgin olive oil.")
print(pizza.order_margherita("coca-cola"))
You ordered for thin pizza with the tomatoes,oregano,extra virgin olive oil. toppings and you have gotten a free coca-cola

Добавление атрибутов и методов для детского класса

Давайте добавим атрибут, который позволяет пользователю выбрать тип доставки и метод, чтобы заказать их пиццу.

class OrderPizza(Pizza):
    def __init__(self, veggies, toppings, crust, oil):
        Pizza.__init__(self, veggies, toppings, crust, oil)
        self.delivery="Bike man"
    def ride_confirmation(self):
        return f"A {self.delivery} will deliver your pizza in twenty minutes"

pizza = OrderPizza( "tomatoes", "oregano" ,"thin","soya oil")
print(pizza.ride_confirmation())
A Bike man will deliver your pizza in twenty minutes

Класс и статические методы

Методы класса

То, что мы посмотрели до сих пор самосчет. Атрибуты и методы. @Classmethod Decorator – это функциональный декоратор, который создает экземпляр класса с использованием другого параметра (ы), чем те, которые обычно передаются в конструктор класса. я. Они обычно отмечены декоратором класса Method и принимают неявный первый аргумент (CLS) II. Это не возвращает экземпляр класса, а новый объект класса CLS.

Пример ниже, может быть, запуск пиццы хочет служить клиентам, которые смотрят их натриевое потребление.

class OrderPizza(Pizza):
    def __init__(self, veggies, toppings, crust, oil):
        Pizza.__init__(self, veggies, toppings, crust, oil)
        self.delivery="Bike man"
    def ride_confirmation(self):
        return f"A {self.delivery} will deliver your pizza in twenty minutes"

    @classmethod
    def healthier_food(cls, vegetable):
        return f"Make me a {vegetable} salad"

order_salad = OrderPizza.healthier_food("parsley")
print(order_salad)
Make me a parsley salad

Статические методы

Статические методы аналогичны методам классов, за исключением того, что они не получают неявный первый аргумент.

я. Они обычно отмечены StaticMethod Decorator II. Они ведут себя как простое функции, за исключением того, что вы можете позвонить им из экземпляра класса.

Пример ниже, возможно, магазин Pizza отсутствует из бекона, он предупреждает, что пользователь выбирает другой TOPPING.

class OrderPizza(Pizza):
    def __init__(self, veggies, toppings, crust, oil):
        Pizza.__init__(self, veggies, toppings, crust, oil)
        self.delivery="Bike man"
    def ride_confirmation(self):
        return f"A {self.delivery} will deliver your pizza in twenty minutes"

    @classmethod
    def healthier_food(cls, vegetable):
        return f"Make me a {vegetable} salad"

    @staticmethod
    def order_bacon_pizza(topping):
        if topping == "bacon":
            return f"we don't have bacon in the store now, please choose another"
        else:
            return f"your pizza with {topping} is ready"

toppings = ["cabbage", "bacon","beef"]
for topping in toppings:
    pizza = OrderPizza.order_bacon_pizza(topping)
    print(pizza)
your pizza with cabbage is ready
we don't have bacon in the store now, please choose another
your pizza with beef is ready

УРА! 🙌. 🎉 🎉 Мы почти закончили, давайте протестируем наш класс Pizza (вы можете проверить для детского класса позже). Ключ к разработке качественного программного обеспечения является проверка вашего кода, когда вы пишете его.

Создайте новый файл (test.py) и добавьте следующий код ниже.

import unittest
from pizza import Pizza


class TestPizza(unittest.TestCase):
    """Tests for the Pizza class"""
    def test_make_marinara(self):
        pizza = Pizza("tomatoes", "oregano", "thin", "coconut oil.")
        pizza = pizza.make_marinara()
        self.assertIn('oregano', pizza)
        self.assertEqual(
            'You ordered for thin pizza with the following toppings tomatoes,oregano,coconut oil.',
            pizza)
        self.assertNotEqual("order a pizza", pizza)
        self.assertNotIn("cheese", pizza)

    def test_order_pepperoni(self):
        pizza = Pizza("tomatoes", "oregano", "thin", "coconut oil.")
        pizza = pizza.order_pepperoni()
        self.assertEqual('You ordered thin pizza topped with beef and cheese',
                         pizza)
        self.assertNotEqual("order a pepperoni pizza", pizza)


unittest.main()
..
----------------------------------------------------------------------
Ran 2 tests in 0.000s

OK

Я действительно надеюсь, что вам понравилась статья, пожалуйста, не стесняйтесь поделиться своим мнением об этом, надеюсь, надеюсь воссоздать это в JavaScript.

использованная литература

  1. Курс пахота Python от Eric Mathes
  2. Сололерн
  3. W3school.

Давайте подклюжим Twitter |. Linkedin.

Оригинал: “https://dev.to/oluchi/a-gentle-introduction-to-python-classes-for-newbies-p46”