如何制作模块化功能?

时间:2017-04-19 18:24:53

标签: python oop modularity

我喜欢制作真正的模块化程序,但很难跟踪哪些函数是其他函数的子程序。因此,我想在父函数内定义子例程。使用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'

不幸的是,这不起作用。它也不是通过尝试访问徽标来实现的。通过它自己。我可以用self定义函数中的每个变量。前缀,但有没有更实用的方法来创建子程序,可以在被调用时访问父函数的内部变量?

2 个答案:

答案 0 :(得分:0)

尝试使用一些实际的OOP

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

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

football = Football()

答案 1 :(得分:0)

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

你需要遵循一个关于上课的简单教程。你想要的东西看起来会更像这样:

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

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

Football()

这有帮助吗?