繁体   English   中英

Python:如何使类方法中的变量可供类访问?

[英]Python: How do I make a variable from a class method accessible to class?

我想从类中访问一个方法变量(不是同一个方法)

def MyDef():
    class MyClass():
        def meth1(self):
            meth2(7)

        def meth2(self, user_value):
            value = 5 - 6*user_value

        if value > 2:
            # do something

MyDef()

我收到以下错误:

NameError:未定义名称“值”。

有人可以帮帮我吗?

这不是答案,但您在这里遗漏了一些基本的 OOP 内容。 我不能在评论中包含全部内容,所以希望这会有所帮助。

  • 你没有任何__init__函数
  • 类不是函数(有争议)。 仅仅因为您定义了类并不意味着它会做任何事情。 您必须从中创建对象。
  • 你的meth1是我认为你想要的__init__
  • 请大体上阅读 OOP,特别是在 python 中。 也许这一个可以给你一个领先地位。
def MyDef():
    class MyClass():
        def __init__(self):
            self.meth2(0)
            self.do_something

        def meth2(self, user_value):
            self.value = 5 - 6*user_value

        @property
        def do_something(self):
            if self.value > 2:
                print "hey"

    myobject = MyClass()
    return myobject.value

也许更好的方法是

def MyDef(value_entered):
    class MyClass():
        def __init__(self, user_value=value_entered):
            self.user_value = user_value
            self.meth2(self.user_value)
            self.do_something

        def meth2(self, user_value):
            self.value = 5 - 6*user_value

        @property
        def do_something(self):
            if self.value > 2:
                print "hey"

    myobject = MyClass()
    return myobject.value

MyDef(0)

您需要在类范围内但在方法之外声明变量。 此外,您的方法需要是静态的,并且您需要在尝试使用修改后的变量之前调用您的方法...如果您的目标是在创建 MyDef 类型的对象时发生特定的事情,请告诉我,因为这是不是你应该如何使用一个类......

def MyDef():
class MyClass():
    def meth1():
        meth2(7)

    def meth2(user_value):
        return 5 - 6*user_value

    value = meth1()
    if value > 2:
        # do something

同样,这是您问题的答案,但请考虑编辑您的问题以描述您这样做的目标,因为这种方法可能不是正确的方法......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM