将对象作为参数传递给python中的子类

时间:2013-08-01 22:31:32

标签: python oop inheritance

我一直在努力理解python的OOP实现。

基本上我需要一些超类来定义一些全局属性,其他类也可以用作其方法的输入。例如:

这就是我认为应该这样做的方式:

class One():
    def __init__(self, name):
         self.name = name

class Two(One):
     def __init__(self, name):    # name from class one...
         One.__init__(self, name)          
     def method_using_name_from_one(self, name_from_one):
         return name_from_one

我想我可以通过在类Two中声明所有方法来实现这一点,就像在第一类方法中那样,但我更喜欢将它们分开。所以回顾一下:我希望第二类中方法的参数使用类One中声明的属性。所以基本上我想传入一个实例化对象作为类Two方法的参数参数。

1 个答案:

答案 0 :(得分:0)

当你说

class Two(One):

一个不是class Two的参数。这意味着第二类继承自第一类。换句话说,除非你重写一个方法,否则它会获得一个类所拥有的所有东西。 编辑:当我这样说时,我指的是参数和函数,我不是指该类的实例。既然你有:

def __init__(self, name):    # name from class one...
    One.__init__(self, name) 

self.name在class Two.换句话说,你可以说......

 def method_using_name_from_one(self):
     return self.name

我建议的一件事是将你的一级声明改为:

 class One(object):

这意味着它继承自object,它并不意味着它传递了一个对象:) 这是你的意思吗?也许我没有正确理解。

如果你想要One,的名字参数,你可以说

 def method_using_name_from_one(self, oneInstance):
     return oneInstance.name