Python继承问题

Python继承问题,python,class,inheritance,Python,Class,Inheritance,我有一类盒子需要在网格中移动,但需要在其方法中访问网格的坐标。我不希望我的类继承网格,除非它们需要。我需要将网格作为参数传递给类,还是让box类从网格类继承?谢谢 这是编辑。让我澄清一下。长方体类需要知道网格的长度和宽度。因此,我需要在类内部调用Grid.length()等函数。不过,我需要它来给我创建的网格的长度和宽度。一般规则是参数 问题是is-a vs.has-a: Is the box a grid? yes: # if so, then is it really a bo

我有一类盒子需要在网格中移动,但需要在其方法中访问网格的坐标。我不希望我的类继承网格,除非它们需要。我需要将网格作为参数传递给类,还是让box类从网格类继承?谢谢


这是编辑。让我澄清一下。长方体类需要知道网格的长度和宽度。因此,我需要在类内部调用Grid.length()等函数。不过,我需要它来给我创建的网格的长度和宽度。

一般规则是参数

问题是is-a vs.has-a:

 Is the box a grid? 
     yes: # if so, then is it really a box???
         The box should inherit grid
     no:
         The box should get a reference to the grid 
            #(generally through a setter or constructor parameter).
编辑
例如:

class Grid:
    def __init__(self,width=1,height=1):
        this.width = width; this.height = height;

    def getDimensions(self):
        return (this.width, this.height)

class Box:
    def __init__(self, grid):
        this.__grid = grid; this.x = 0; this.y = 0            

    def verify(self):
        width, height = this.__grid.dimensions()
        if this.x < width and this.y < height:
             print( "A-OK!" ); 
        else
             print( "I am off the grid!!!" )


grid = Grid();
box = Box(grid);
box.verify();
类网格:
def uuu init uuuu(自,宽度=1,高度=1):
这个。宽度=宽度;高度=高度;
def getDimensions(自):
返回值(this.width,this.height)
类框:
定义初始化(自,网格):
这是。u网格=网格;这个.x=0;这个。y=0
def验证(自我):
宽度、高度=此。\网格尺寸()
如果此.x<宽度,此.y<高度:
打印(“A-OK!”);
其他的
打印(“我离开网格!!!”)
网格=网格();
长方体=长方体(网格);
box.verify();

框应参考网格。 但是,对于内部类,不需要将网格作为参数传递给内部类。 内部类是一个Java特性,但您可以将其元编程为Python


由于长方体不是网格类型的细化,因此不应继承它们


您可能对采集模式和模式感兴趣。这允许从动态包含层次结构而不是静态类(is-a)层次结构获取属性

根据您所说的,
box
类不应从
网格
类继承,因为这将违反LSP

见:


类应该知道如何查询
网格
以获取相关信息。

框不是网格,而是网格中的一个球。那么我如何将其作为参数传递呢?问题:为什么要使用这个?在3.2中,您不需要使用self吗?\u insertvariable在此“
”您的意思是“
self
”?这会加快过程吗?或者,这与将网格作为一个参数提供给其中一个类,然后从该类继承一样吗?因为我正处于时间紧迫期,我不担心速度,只担心它目前可以工作。你说的“访问该网格的坐标”是什么意思?他们需要知道自己在网格中的坐标吗?或者其他坐标?让我编辑这个问题,盖伊,我不清楚,我还没有在3.x上试过。试试看。:-)