【问题标题】:Trying to initialize members in a class by calling variable from outside function尝试通过从外部函数调用变量来初始化类中的成员
【发布时间】:2021-10-12 20:10:35
【问题描述】:

您好,我正在处理一项作业,我正在尝试调用我在创建类之前输入到函数中的值。我做错了什么。或者这甚至是可能的。

def main():
    size = int(input()) 

class Ant:

    def __init__(self):
        self._size = (size??) 

    def get_size(self):
        return self._size

main()

ant_1 = Ant()

print(ant_1.get_size()) 

【问题讨论】:

  • 变量“size”是函数“main”的局部变量,并在执行结束时消失。将其明确声明为“全局”。
  • 为什么不直接将size 添加到Ant 并将其作为参数发送到__init__
  • @MichaelButscher 更好,从 main 显式返回值。

标签: python function class init


【解决方案1】:

正如@Michael 提到的,sizemain 函数范围内的局部变量。您需要定义它global 才能在任何地方访问它:

def main():
    global size
    size = int(input()) 

但是global变量不好,所以可以返回值,将参数size添加到__init__()中,并传递返回值:


def main():
    size = int(input()) 
    return size
class Ant:

    def __init__(self,size):
        self._size = (size) 

    def get_size(self):
        return self._size

size=main()
ant_1 = Ant(size)
print(ant_1.get_size()) 

【讨论】:

  • 所以我们还没有学习全局的东西,所以我怀疑我可以使用它。感谢您的答复。但我还是有点困惑,因为它们实际上是多个值,比如位置和方向,应该在 main 之下。并且这些输入需要以某种方式调用到 ant 类中的 init。不知道怎么做。
【解决方案2】:

您可以将size 添加到您的Ant 构造函数中:

class Ant:

    def __init__(self, size):
        self._size = size

    def get_size(self):
        return self._size

那么您的 main 将如下所示:

def main():
    size = int(input())
    my_ant = Ant(size)
    print(my_ant.get_size()) 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-23
    • 2019-10-23
    相关资源
    最近更新 更多