如何制作模块化功能?

How do I make a modular function?

我喜欢编写真正模块化的程序,但很难跟踪哪些函数是其他函数的子例程。因此,我想在父函数内部定义子例程。使用 Python 的函数对象定义,这将是一个有说服力的实现:

>>> def football():
...     self = football
...
...     logo = "Nike"
...
...     self.display_logo(self)
...
>>> def display_logo(self):
...     print(self.logo)

>>> football.display_logo = display_logo

>>> football()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 6, in football
  File "<stdin>", line 2, in display_logo
AttributeError: 'function' object has no attribute 'logo'

不幸的是,这不起作用。尝试单独访问 'logo' 也不起作用。我可以用 self 定义函数中的每个变量。前缀,但是有没有更实用的方法来创建子程序,这些子程序在被调用时可以访问父函数的内部变量?

尝试使用一些实际的 OOP

class Football:
    def __init__(self):
        self.logo = 'Nike'
        self.display_logo()

    def display_logo(self):
        print(self.logo)

football = Football()

错误是因为 selfdisplay_logo 的参数,不是你认为的具有属性的对象有。如果您尝试逐行检查您的代码,您会发现各种各样的问题。最大的问题是您使用变量就好像您有一个 class 定义一个对象,但您从未定义过一个 class。在大多数情况下,您使用的名称只是:普通名称,没有特殊含义。一旦您尝试以特殊方式使用它们,Python 就会给您一条错误消息。

您需要按照制作 class 的简单教程进行操作。你想要的看起来更像这样:

class Football():
    def __init__(self):
        self.logo = "Nike"
        self.display_logo()

    def display_logo(self):
        print(self.logo)

Football()

有帮助吗?