简单的python通信类错误?

时间:2011-11-09 23:02:48

标签: python inheritance

嗨我在传递变量/从其他类中执行函数时遇到了一些麻烦,

现在我有类似的东西,

class 1(3):
    def hi():
       print 'class 1'

class 2(3):
    def hi2():
       print 'class 2'

class 3:
    def hi3():
       print 'class 3'

让我们说,从第1课开始,我想从第2课开始执行一个函数,我该怎么做?

我已经谷歌搜索了一段时间,并没有取得多大成功(除了找到蛇的图像)

非常感谢任何有关此问题的帮助

3 个答案:

答案 0 :(得分:2)

1无法访问2的方法; 2位于不同的继承链上。

您可以使用1的实例从方法中调用raw函数,但不要这样做。修改你的继承链。

答案 1 :(得分:2)

如果第3类需要来自第1类和第2类的函数,则可以进行双重继承:

class one:
    def funct1(self):
        print 'I am defined in class one'
    self.data1 = "one"

class two:
    def funct2(self):
        print 'I am defined in class two'
    self.data2 = "two"

class three(one, two):
    def funct3(self):
        print 'I am defined in class three'
    self.data3 = "three"

然后,任何由第3类创建的对象都可以调用funct1,funct2和funct3。此对象也将拥有自己的self.data1,self.data2和self.data3版本。

ob_3 = three()
ob_3.data1

打印'one'

ob_3.funct1()

打印'我在第一阶段定义'

现在,另一方面,如果你想要一个子类的函数来调用超类的方法,可以这样做:

class one:
    def funct1(self):
        print 'class one'

class two(one):
    def funct2(self):
        one.funct1(self)

ob2 = two()
ob2.funct2()

打印'class one'

希望这有帮助!

答案 2 :(得分:-1)

第3类是基类,第2类是子类。您正在尝试从基类调用子类函数。这似乎不对。这不是一件容易的事。

你为什么要这样做?