python中的__init__方法

init()方法意义重大的原因有两个。第一个原因是在对象生命周期中初始化是最重要的一步;每个对象必须正确初始化后才能正常工作。第二个原因是init()参数值可以有多种形式。

__init__方法使用

1.使用demo

初始化 。注意,这个名称的开始和结尾都是双下划线。
使用__init__方法
代码例子

#!/usr/bin/python
# Filename: class_init.py
class Person:
    def __init__(self, name):
        self.name = name
    def sayHi(self):
        print Hello, my name is, self.name
p = Person(Swaroop)
p.sayHi()
# This short example can also be written as Person(Swaroop).sayHi()

输出

$ python class_init.py
Hello, my name is Swaroop

它如何工作
这里,我们把__init__方法定义为取一个参数name(以及普通的参数self)。在这个__init__里,我们只是创建一个新的域,也称为name。注意它们是两个不同的变量,尽管它们有相同的名字。点号使我们能够区分它们。

最重要的是,我们没有专门调用__init__方法,只是在创建一个类的新实例的时候,把参数包括在圆括号内跟在类名后面,从而传递给__init__方法。这是这种方法的重要之处。

现在,我们能够在我们的方法中使用self.name域。这在sayHi方法中得到了验证。
       __init__方法类似于C 、C#和Java中的 constructor

2.注意点

注意1、__init__并不相当于C#中的构造函数,执行它的时候,实例已构造出来了。

class A(object):
    def __init__(self,name):
        self.name=name
    def getName(self):
        return ‘A ‘+self.name

当我们执行

a=A(‘hello‘)

时,可以理解为

a=object.__new__(A)
A.__init__(a,‘hello‘)

即__init__作用是初始化已实例化后的对象。

注意2、子类可以不重写__init__,实例化子类时,会自动调用超类中已定义的__init__

class B(A):
    def getName(self):
        return ‘B ‘+self.name

if __name__==‘__main__‘:
    b=B(‘hello‘)
    print b.getName()

但如果重写了__init__,实例化子类时,则不会隐式的再去调用超类中已定义的__init__

class C(A):

    def __init__(self):

        pass

    def getName(self):

        return ‘C
 ‘+self.name

 

if __name__==‘__main__‘:

    c=C()

    print c.getName()

则会报"AttributeError: ‘C‘ object has no attribute ‘name‘”错误,所以如果重写了__init__,为了能使用或扩展超类中的行为,最好显式的调用超类的__init__方法

class C(A):

    def __init__(self,name):

        super(C,self).__init__(name)

    def getName(self):

        return ‘C
 ‘+self.name

 

if __name__==‘__main__‘:

    c=C(‘hello‘)   

    print c.getName()

参考链接:https://www.cnblogs.com/insane-Mr-Li/p/9758776.html

原文地址:https://www.cnblogs.com/xiohao/p/11280330.html

时间: 2024-10-09 16:14:28

python中的__init__方法的相关文章

Python中的__new__()方法与实例化

@Python中的__new__()方法与实例化 __new__()是在新式类中新出现的方法,它作用在构造方法建造实例之前,可以这么理解,在Python 中 存在于类里面的构造方法__init__()负责将类的实例化,而在__init__()启动之前,__new__()决定是否 要使用该__init__()方法,因为__new__()可以调用其他类的构造方法或者直接返回别的对象来作为本类 的实例. 如果将类比喻为工厂,那么__init__()方法则是该工厂的生产工人,__init__()方法接受

Python中的__init__和__new__介绍

介绍 首先我们要知道在面向对象编程中,实例化基本遵循创建实例对象.初始化实例对象.最后返回实例对象这么一个过程. Python 中的 __new__ 方法负责创建一个实例对象,__init__ 方法负责将该实例对象进行初始化. __new__() 是在新式类中新出现的方法,它作用在构造方法建造实例之前,可以这么理解,在 Python 中存在于类里面的构造方法 __init__() 负责将类的实例化,而在 __init__() 启动之前,__new__() 决定是否要使用该 __init__()

python中的__init__(self)是什么意思呢

python中的__init__(self)是什么意思呢 init(self)这个时类的初始化函数 1 2 3 4 class Obj: def init(self): print 1 obj = Obj() #这时候__init__这个函数会被调用,self指obj这个对象. 如果解决了您的问题请采纳!如果未解决请继续追问 追问 请问obj=Obj() obj是类Obj的对象吗,Obj()就代表 init()函数吗 追答 不是代表__init__()函数,而是代表会调用__init__()函数

Python中的sort()方法的使用

本文和大家分享的主要是python中的sort()方法相关知识,一起来看看吧,希望对大家学习python有所帮助. 一.基本形式 sorted(iterable[, cmp[, key[, reverse]]]) iterable.sort(cmp[, key[, reverse]]) 参数解释: (1)iterable指定要排序的list或者iterable,不用多说: (2)cmp为函数,指定排序时进行比较的函数,可以指定一个函数或者lambda函数,如: students为类对象的list

关于python中的特殊方法

研究了几个小时,大概对python中的特殊方法一知半解,现在写写自己的理解,以及记录一些找到的资源.待自己有比较深入理解的时候,再来更新 https://docs.python.org/3/reference/datamodel.html#special-method-names 有一篇文章是要必须推荐给读者阅读的:Python Attributes and Methods(http://www.cafepy.com/article/python_attributes_and_methods/p

python中http请求方法有哪些

在python开发(http://www.maiziedu.com/course/python-px/)中,我们一般通过get.post方式发送http请求,可是最近在使用python做接口测试,发现python中http请求方法有许多种,作者整理了一番,把python中http请求方法都总结了出来,分享给大家,具体内容如下所示:一.python自带库----urllib2python自带库urllib2使用的比较多,简单使用如下:import urllib2response = urllib2

Python中格式化format()方法详解

Python中格式化format()方法详解 Python中格式化输出字符串使用format()函数, 字符串即类, 可以使用方法; Python是完全面向对象的语言, 任何东西都是对象; 字符串的参数使用{NUM}进行表示,0, 表示第一个参数,1, 表示第二个参数, 以后顺次递加; 使用":", 指定代表元素需要的操作, 如":.3"小数点三位, ":8"占8个字符空间等; 还可以添加特定的字母, 如: 'b' - 二进制. 将数字以2为基数

Python中字典get方法的使用

Python中字典get方法的使用 说起来,这个功能是否需要学习还真是有待于讨论.其实,知道了字典这种数据结构以后,通过最基本的Python功能也能够实现一个类似的功能.不过,既然内置了这个功能那么我们就没有必要重复造车轮. 在字典内置的方法中,想说的方法为get.这个方法是通过键来获取相应的值,但是如果相应的键不存在则返回None.其实,None只是一个默认的返回值但是并不是一个不能修改的返回值.其实,如果查询失败,我们可以指定一个返回值. 上面提到的所有功能汇总在一个示范代码,具体如下: #

Python中的__new__()方法的使用

__new__() 函数只能用于从object继承的新式类. 先看下object类中对__new__()方法的定义: class object:   @staticmethod # known case of __new__   def __new__(cls, *more): # known special case of object.__new__     """ T.__new__(S, ...) -> a new object with type S, a s