【发布时间】:2019-02-26 11:40:32
【问题描述】:
在尝试使用类和方法以及如何在它们之间传递变量时,我编写了几个脚本来尝试理解其中的机制。 在这样做时,我遇到了一个问题,即我的一个函数未定义:
NameError: name 'exclaim' is not defined
我认为使用 self 可能会解决,但我只是循环进入
NameError: name 'self' is not defined
我遇到了几个关于这导致我查看方法的缩进级别的来源,并通过 HelloWorld.exclaim() 调用 遇到了同样的问题。
请看我的代码:(script1)
import datasource
class HelloWorld:
def exclaim():
number1 = input("enter a number")
datasource.Class2.method3.impvariable1 = number1
def main():
HelloWorld.exclaim()
print(datasource.Class1.method1.variable1)
print(datasource.Class2.method2.variable2)
print(datasource.Class2.method3.variable3)
if __name__ == '__main__':
main()
脚本2:
#datasource.py
class Class1:
def method1():
variable1 = "Hello "
class Class2:
def method2():
variable2 = "World"
def method3():
impvariable1 = 0
variable3 = "!"
for x in range(impvariable1):
variable3 = variable3 + "!"
我也尝试过(100 次其他迭代)
#datahandler.py
import datasource
class HelloWorld:
def exclaim(self):
number1 = input("enter a number")
datasource.Class2.method3.impvariable1 = number1
def main(self):
HelloWorld.exclaim(self)
print(datasource.Class1.method1.variable1)
print(datasource.Class2.method2.variable2)
print(datasource.Class2.method3.variable3)
if __name__ == '__main__':
main(self)
产生;
NameError: name 'self' is not defined
【问题讨论】:
-
实例方法应该明确地将
self作为它们的第一个参数。您的main定义不应在类中。你的if __name__块不应该在一个类中。我什至不确定你的课应该是做什么的。 -
查看此链接以获得有关 python OOP 的良好指南:realpython.com/python3-object-oriented-programming
-
就目前而言,我没有遇到与您相同的错误。你能分享给出这个错误的确切代码吗?或者更清楚你想要做什么?您是否尝试从另一个类设置实例变量(手头没有实例)?
-
如果条件和方法 main(0) 需要在 HelloWorld 类之外编写,并且类中的每个方法都需要一个 self 作为第一个对象,如 def exclaim(self):
-
从字面上遵循每一条指导方针,非常明确和直接地表达了我的需要。提供必要的最短代码,并因为代码不清楚而感到悲痛和否决:/我是新手新手,这就是问题所在,这个论坛足以吓跑人们编码,幸运的是 Rahil 很有耐心和善良客观地看待问题是什么,大家可以向他学习,让编程社区变得更好,更容易访问!
标签: python python-3.x class methods self