开发者社区> 问答> 正文

python构造方法是什么?

python构造方法是什么?

展开
收起
云计算小粉 2018-05-10 20:10:56 1707 0
1 条回答
写回答
取消 提交回答
  • 最方便的语言,最简洁的简介

    构造方法与其他普通方法不同的地方在于,当一个对象被创建后,会立即调用构造方法。

    在python中创建一个构造方法很简单,只需要把init方法的名字从简单的init修改为魔法版本__init__即可。

    class foobar:

      def __init__(self):

        self.somevar = 42

    f = foobar()
    f.somevar
    42

    如果给构造方法传递几个参数的话,会怎么样呢?

    class foobar:

    ... def __init__(self, value = 42):
    ... self.somevar = value
    ...

    f = foobar('this is a test')
    f.somevar

    'this is a test'


    重写一般方法和特殊的构造方法

    每个类都可能有一个或者多个超类,它们从超类那里继承行为方式,如果一个方法在b类的一个实例中被调用,但在b类中没有找到该方法,那么就去它的超类a里面找

    class a:

      def hello(self):

        print "hello,i'am a."

    class b(a)

    a类定义了一个叫做hello的方法,被b类继承,下面是一个说明类是如何工作的列子

    A = a()

    B = b()
    A.hello()hello,i'am a

    B.hello()

    hello,i'am a

    因为b类没有定义自己的hello方法,所以当hello被调用的时候,原始的信息就被打印出来。

    在子类中增加功能的最基本的方法就是增加方法,但是也可以重写一些超类的方法来自定义继承的行为。b类也能重写这个方法,比如下面的列子中b类的定义被修改了。

    class b(a):

      def hello(self):

        print "hello,i'am b."

    重写是继承机制中的一个重要内容,对于构造方法尤其重要,构造方法用来初始化新创建的对象的状态,大多数子类不仅要拥有自己的初始化代码,还要拥有超类的初始化代码,虽然重写的机制对于所有方法来说都是一样的,但是当重写构造方法和普通重写方法更容易遇到特别的问题,比如,如果一个类的构造方法被重写,那么就需要调用超类的构造方法,否则,对象可能不会被正确的初始化。

    2019-07-17 22:23:45
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载