python(一):构造方法 /类的初始化

本文介绍了Python中构造方法`__init__`的基本使用,包括无参数和带参数的构造方法实例,以及如何在子类中重写构造方法。讨论了两种在子类中扩展父类构造方法的方法:调用未绑定的超类构造方法和使用`super()`函数。

python(一):构造方法 /类的初始化

init

当类中的一个对象被创建时,会立即调用构造方法。
构造方法 init的使用:

class FooBar:
    def __init__(self):
        self.somevar = 42
f = FooBar()
print f.somevar

(这里注意f = FooBar(),要带括号)
输出结果:

42

  • 带参数构造
class FooBar:
    def __init__(self,value=42):
        self.somevar = value
f = FooBar("this is a constructor argument")
print f.somevar

输出结果:

this is a constructor argument

重写构造方法

子类中如果重写了构造方法, 那么就自动覆盖掉了父类构造方法了,那么如果只是想在子类构造方法中增加一些内容,如何做到只是增加内容而不覆盖父类中原有的内容呢?有两种方法:

  1. 调用未绑定的超类构造方法
    首先看一个例子:
class Bird:
    def __init__(self):
        self.hungry = True
    def eat(self):
        if self.hungry:
            print "Aaaah"
            self.hungry = False
        else:
            print "No,thanks"

定义了一个父类 Bird。下面定义一个子类:

class SingBird:
    def __init__(self):
        Bird.__init__(self)
        self.sound = "squawk"
    def sing(self):
        print self.sound

这里使用了

Bird.init(self)
这样就可以在父类的基础上增加内容了。
2. 使用super函数

class SingBird:
    def __init__(self):
        super(SingBird,self).__init__()
        self.sound = "squawk"
    def sing(self):
        print self.sound

使用

super(SingBird,self).init()

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值