如何制作模块化功能?
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()
错误是因为 self,display_logo 的参数,不是你认为的具有属性的对象有。如果您尝试逐行检查您的代码,您会发现各种各样的问题。最大的问题是您使用变量就好像您有一个 class 定义一个对象,但您从未定义过一个 class。在大多数情况下,您使用的名称只是:普通名称,没有特殊含义。一旦您尝试以特殊方式使用它们,Python 就会给您一条错误消息。
您需要按照制作 class 的简单教程进行操作。你想要的看起来更像这样:
class Football():
def __init__(self):
self.logo = "Nike"
self.display_logo()
def display_logo(self):
print(self.logo)
Football()
有帮助吗?
我喜欢编写真正模块化的程序,但很难跟踪哪些函数是其他函数的子例程。因此,我想在父函数内部定义子例程。使用 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()
错误是因为 self,display_logo 的参数,不是你认为的具有属性的对象有。如果您尝试逐行检查您的代码,您会发现各种各样的问题。最大的问题是您使用变量就好像您有一个 class 定义一个对象,但您从未定义过一个 class。在大多数情况下,您使用的名称只是:普通名称,没有特殊含义。一旦您尝试以特殊方式使用它们,Python 就会给您一条错误消息。
您需要按照制作 class 的简单教程进行操作。你想要的看起来更像这样:
class Football():
def __init__(self):
self.logo = "Nike"
self.display_logo()
def display_logo(self):
print(self.logo)
Football()
有帮助吗?