我对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
从导入的模块中调用该函数。为什么我能做到这一点?我不确定这背后的理论。
老师请帮忙!
非常感谢!
答案 0 :(得分:1)
我认为您在这里误解了代码。
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的约定。
python调用此方法时所执行的操作是将当前对象传递给第一个参数。 self.item_type
说,使用此对象,并将变量item_type定义为字符串'product'
但是,self.create_items(app_items)
将失败,因为您的对象没有app_items方法。