我喜欢制作真正的模块化程序,但很难跟踪哪些函数是其他函数的子程序。因此,我想在父函数内定义子例程。使用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定义函数中的每个变量。前缀,但有没有更实用的方法来创建子程序,可以在被调用时访问父函数的内部变量?
答案 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()
这有帮助吗?