我是编程新手,并对实例,类和静态变量进行了一些研究。最近,我试图简化我的项目代码,以帮助我在Python中学习更多。在这个特定的例子中,没有双关语,我希望能够调用somefoo()函数,该函数将根据条件为 init 实例变量1和2分配参数。根据我的理解,为了调用somefoo()函数,必须实例化Foo()类;但是,类所需的参数在该类中的somefoo()函数内。提前谢谢!
import random
class Foo():
def __init__(self, one, two):
self.foobar = random.random()
self.one = one
self.two = two
def somefoo(self):
if self.foobar > 0.5:
one = ':)'
two = 1
Foo(one, two)
if self.foobar < 0.5:
one = ':('
two = 0
Foo(one, two)
somefoo()
答案 0 :(得分:0)
首先,我甚至不知道您是否已经检查您的代码,然后将其发布到此处寻求帮助,因为它确实存在问题。有很多语法错误。这就是它应该是......
import random
class Foo:
def __init__(self, one, two):
self.foobar = random.random()
self.one = one
self.two = two
def somefoo(self):
if self.foobar > 0.5:
one = ':)'
two = 1
Foo(one, two)
if self.foobar < 0.5:
one = ':('
two = 0
Foo(one, two)
somefoo()
类名之前的括号在python中没有必需以及无用的缩进。对于缩进,Python是敏感,因此请确保您的缩进有意义,并在逻辑上使用它们。现在回答你的问题;这是如何做到的:
import random
class Foo:
def __init__(self, one, two):
self.foobar = random.random()
self.one = one
self.two = two
self.somefoo()
def somefoo(self):
if self.foobar > 0.5:
self.one = ':)'
self.two = 1
if self.foobar < 0.5:
self.one = ':('
self.two = 0
def __str__(self):
return str(self.one)+" "+str(self.two)
print(Foo(10,20))
基本上你试图调用 somefoo 的部分没有错,是的,当python在内存中创建它的对象时,它会执行该类,但在你的代码中,该方法是绑定类型(即需要和对象执行)。所以你可以做的是使用某种对象工厂模式,或者使用我上面粘贴的那个,在生成对象时,它会调用绑定的方法来刷取数据。有问题的实例并显示输出。引入了 python3未绑定方法,可以在没有自我对象引用的情况下使用。请务必仔细研究它们以及它们的工作原理,因为它们可以帮助您更灵活地解决问题。