Python,类间关系和对象依赖

时间:2011-07-02 11:33:22

标签: python class relationship

修改

为先前的一般性道歉!

我特此试着让自己更清楚。 我正在测试一个图像,所以我要编写一些方法来运行来分析图像。并非所有测试的图像都是相同的,因此我希望每个图像都有一个对象。 我要编写的许多方法都没有在所有图像上运行。例如,我有一种方法,它使用像素间距常数返回图像中心的阵列点的距离,该像素间距常数是图像的属性。这里我有一个例子,我读了一个图像,从而创建了对象图像,以及一些对我有用的属性。但是我的点对象,“属于”该图像,如果他们有自己的类,就不能访问这些属性;有一个点类是有用的,因为其他分析也使用点,并使用相同的方法。

    class image(object):
    def __init__(self, filepath)
    #creates an instance of the image from filepath
        xscale = self.read_header(xspacing)
        xscale = self.read_header(yspacing) #pixels per mm property of image

    class point(object):
    def __init__(slef, i,j)
    self.i = i # array position in image.
    self.j = j
    self.x = self.i * xscale #real position in mm in image
    self.y = self.i * yscale ##but xscale and y scale are not in scope here.

所以问题是......我如何给像点对象属性,比如依赖于图像属性的距离,如xscale和yscale。在我看来,我希望允许image.point.x,其中image.point.x依赖于image.xscale。 我认为我们现在可能忽略的轻微并发症是,不应该允许在图像的上下文之外存在一个点,因为它并不意味着任何与图像属性相关的点,如比例。 我希望这更清楚,通常更有用。谢谢。

原创问题。

我想要一个开放的图像。图像应该是一个对象,因为有很多方法与它相关联。读取标题信息并为对象提供许多属性,如title,sizex,sizey ......

然后图像由点组成,显然=所以我认为我有一个分数类。然后我可以定义一个Point对象,它可以有属性,比如position(取决于图像头中的一些像素间距常量)。这个类会有很多点法,比如距离,变化值,移动,比例,两点之间的polt等等。

我的问题是双重的。点对象的创建应该真正取决于图像对象的存在。我不知道python如何处理这种有条件的对象创建。第二,点对象必须知道它与之相关的图像对象。理想情况下,我会有Image.Point(x,y),这意味着点x,y存在于图像中,因此它可以访问初始化图像对象时创建的所有变量。我希望所有这些都有道理。我试过超级,但它似乎没有做条件位,它在基类中运行一个方法,我真的只想让一些变量可用。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

你可以这样做:

class Point(object):
    def __init__(self, image):
        self._image = image

class Image(object):
    def __init__(self, width, height):
        self._points = [Point(self) for unused in range(width * height)]

这样,每个点在初始化时都需要一个图像,每个图像都有一个与之关联的点列表。请注意,由于您要创建大量Point - 个实例,这可能会占用大量内存,因此您应该考虑将slots用于Point

答案 1 :(得分:1)

所以你希望图像有一个返回该图像(点工厂)中的点的方法,如:

class Image:
    #...
    def point_at(self, x,y):
        return PointInImage(self, ...)
    #...

class PointInImage:
    #...
    def __init__(self, image, ...):
        self.image = image
        #...
    #...
相关问题