Вопрос о методе Python OOP __init__ - PullRequest
0 голосов
/ 03 октября 2018

У меня есть короткий вопрос о методе Python OOP __init__, и он здесь для справки.

Допустим, у меня есть модуль с именем basic_backend.py, который имеет следующий код:

items = list()


def create_items(app_items):

    global items
    items = app_items

Затем у меня есть другой модуль MVC, в котором я написал:

import basic_backend

class ModelBasic(object):

    def __init__(self, app_items):
        self._item_type = 'product'
        self.create_items(app_items)

Мой вопрос в том, что в методе __init__ я смог использовать self для вызова функции из импортированного модуля,Почему я могу сделать это, пожалуйста?Я не уверен в теории, стоящей за этим.

Гуру, пожалуйста, помогите!

Большое спасибо!

1 Ответ

0 голосов
/ 03 октября 2018

Я думаю, что вы неправильно понимаете код здесь.

self.create_items(app_items) не вызывает функцию basic_backend , она вызывает функцию ModelBasic , которая не существует.

selfпеременная, которая является ссылкой на текущий объект

def __init__(self, app_items):
    self._item_type = 'product'
    self.create_items(app_items)

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

Что делает питон при вызове этого метода, так это то, что он передает текущий объект первому аргументу.self.item_type говорит, что возьмите этот объект и определите переменную item_type в виде строки 'product'

Однако self.create_items(app_items) завершится ошибкой, поскольку у вашего объекта нет метода app_items.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...