访问另一个类中定义的变量

时间:2013-01-28 07:41:35

标签: python class python-2.6

我有四个python脚本,代码如下:

main.py

from new import Name1
from new2 import Name2

class Details:

    def __init__(self, id=0, vuse=True):
        assert(id > 0)
        self.id = id
        self.vuse = vuse

    def Main(self):
        try:
            self.dir = "/value/"
            ti = Name1(id = self.id, dir = self.dir)
            name = ti.getDay()
            print name
        except Exception, e:
            print "Failed with %s" % e

if __name__ == "__main__":
    at = Details(id = '1', vuse=True)
    at.Main()

new.py

class Name1:

    def __init__(self,id,dir=''):
        self.id = id
        self.dir = dir

    def getDay(self):
        try:
            if id == 1:
                self.day = "monday"
                print "Name %s" % self.day
                return self.day
            else:
                self.day = "Another"
                print "Day %s" % self.day
                return self.day
        except Exception, e:
            print "ERROR : %s" % e

new2.py

from find import Find
from main import Details

class Name2:

    def getitems(self):
            self.id = "// This value i want from main.py or new.py script"
        at = Find(id = self.id )
        val = at.value()
        print val

if __name__ == "__main__":
    a = Name2()
    a.getitems()

find.py

class Find:

    def __init__(self, id):
        self.id = id

    def value(self):
        if self.id == 1:
            print "Right value"
            ##// Do some operation with id//

        else:
            print "invalid"

我的问题是如何在new2.py中访问id value ... 如果我将从main.py获取值,为了调用类我需要传递new2.py没有的id值。对于new.py也一样,我需要id来创建一个类的对象。

2 个答案:

答案 0 :(得分:0)

目前还不清楚你的程序应该如何工作,但你可以在创建它时在Name2的实例中初始化id:

def Main(self):
    self.dir = "/value/"
    ti = Name1(self.id, self.dir)
    ti_2 = Name2(self.id)

class Name2:
    def __init__(self, id):
        self.id = id

或将其作为参数传递给getitems:

def Main(self):
    self.dir = "/value/"
    ti = Name1(self.id, self.dir)
    ti_2 = Name2()
    ti_2.getitems(self.id)

class Name2:
    def getitems(self, id):
        self.id = id

答案 1 :(得分:0)

你的问题,就目前而言,没有意义。

您问的是如何从idmain.py获取new.py值。但在其中任何一个中都没有id值。每个id实例和每个main.Details实例中都有一个单独的new.Name1成员。可能有3000个,或者其中0个。

您需要知道要从中获取Details的{​​{1}}或Name1个实例。一旦你知道,这很容易:

id

这实际上是类的全部要点 - 类定义了可以多次独立实例化的数据和操作的集合。如果那不是你想要的,你不应该使用一个类。