好的,所以我正在努力在 django 中创建一些命令,但是我在这里遇到了一个关于我的代码的有趣问题......
from django.core.management.base import LabelCommand
from optparse import make_option
class Command(LabelCommand):
requires_system_checks = False
can_import_settings = True
args ="[none]"
label = "person's name"
option_list = LabelCommand.option_list + (
make_option('--cap',
action='store_true',
dest='capitalize',
help= 'Tells Django to capitalize the name'),
)
help = "Runs a shell output that writes out 'Hello' and the specified name"
def handle_label(self, name, **options):
if options.get('capitalize', False):
name = name.capitalize()
print ("Hello %s!" % name)
困扰我handle_label
的是代码后半部分的 def,以及self和object输入之间的明显差异。我认为self是从主类(在本例中为Command)继承的实例。我对此感到困惑,因为如果我实际上是在此方法中输入一个对象(在本例中为 name),那么我为什么需要 self 呢?我没有在这里引用它,为什么我需要输入它作为参数?也许我不太了解这种方法。无论哪种方式,有人可以帮我澄清这些差异吗?谢谢。