如何使Python中父对象有的属性子对象都有?

<span style="font-size:18px;">class soldier ( object ):
    def __init__ (self,weapon):
        self.weapon = weapon

class marine (soldier):
    def __init__ (self,weapon):
        pass

mymarine = marine("gun")
print mymarine.weapon<span style="white-space:pre">	<span style="color:#ff6666;">#error:mymarine has no attribute weapon</span></span></span><span style="font-size:18px; font-family: Arial, Helvetica, sans-serif;">	</span><span style="font-family: Arial, Helvetica, sans-serif;">				</span>

在上例中,定义了一个soldier类,又定义了一个它的子类marine类。本来以为,marine作为soldier的子类,那么soldier有的属性他都会有,所以初始化的时候什么都不用做。但事实上,这在python的语法中是错误的,至少在python2.7版本中是错的。

解决这个问题,Python2.7的思路是在子类marine初始化的时候,调用父类soldier的初始化方法将子对象本身再初始化一遍就可以了。

即:soldier.__init__(self,weapon)。代码如下:


<span style="font-size:18px;">class soldier ( object ):
    def __init__ (self,weapon):
        self.weapon = weapon

class marine (soldier):
    def __init__ (self,weapon):
        soldier.__init__(self,weapon)

mymarine = marine("gun")
print mymarine.weapon <span style="color:#ff0000;"># gun</span></span>
问题解决!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值