精华内容
下载资源
问答
  • python 类的初始化

    2016-08-01 15:16:00
    虽然我们可以自由地给一个实例绑定各种属性,...在定义 Person 时,可以Person添加一个特殊__init__()方法,当创建实例时,__init__()方法被自动调用,我们就能在此每个实例都统一加上以下属性: cl...
    虽然我们可以自由地给一个实例绑定各种属性,但是,现实世界中,一种类型的实例应该拥有相同名字的属性。例如,Person类应该在创建的时候就拥有 name、gender 和 birth 属性,怎么办?
    
    在定义 Person 类时,可以为Person类添加一个特殊的__init__()方法,当创建实例时,__init__()方法被自动调用,我们就能在此为每个实例都统一加上以下属性:
    
    class Person(object):
        def __init__(self, name, gender, birth):
            self.name = name
            self.gender = gender
            self.birth = birth
    __init__() 方法的第一个参数必须是 self(也可以用别的名字,但建议使用习惯用法),后续参数则可以自由指定,和定义函数没有任何区别。
    
    相应地,创建实例时,就必须要提供除 self 以外的参数:
    
    xiaoming = Person('Xiao Ming', 'Male', '1991-1-1')
    xiaohong = Person('Xiao Hong', 'Female', '1992-2-2')
    有了__init__()方法,每个Person实例在创建时,都会有 name、gender 和 birth 这3个属性,并且,被赋予不同的属性值,访问属性使用.操作符:
    
    print xiaoming.name
    # 输出 'Xiao Ming'
    print xiaohong.birth
    # 输出 '1992-2-2'
    要特别注意的是,初学者定义__init__()方法常常忘记了 self 参数:
    
    >>> class Person(object):
    ...     def __init__(name, gender, birth):
    ...         pass
    ... 
    >>> xiaoming = Person('Xiao Ming', 'Male', '1990-1-1')
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: __init__() takes exactly 3 arguments (4 given)
    这会导致创建失败或运行不正常,因为第一个参数name被Python解释器传入了实例的引用,从而导致整个方法的调用参数位置全部没有对上。
    
    任务
    请定义Person类的__init__方法,除了接受 name、gender 和 birth 外,还可接受任意关键字参数,并把他们都作为属性赋值给实例。
    
     
    
    ?不会了怎么办
    要定义关键字参数,使用 **kw;
    
    除了可以直接使用self.name = 'xxx'设置一个属性外,还可以通过 setattr(self, 'name', 'xxx') 设置属性。
    
    参考代码:
    
    class Person(object):
        def __init__(self, name, gender, birth, **kw):
            self.name = name
            self.gender = gender
            self.birth = birth
            for k, v in kw.iteritems():
                setattr(self, k, v)
    xiaoming = Person('Xiao Ming', 'Male', '1990-1-1', job='Student')
    print xiaoming.name
    print xiaoming.job

     

    展开全文
  • 初始化方法: 类名( ) 就可以创建一个...2.调用初始化方法为对象属性设置初始值 这个初始化方法是内置方法,是专门用来定义一个据有哪些属性和方法 class Cat: def __init__(self,name): self.name = name ...

    初始化方法:
    类名( ) 就可以创建一个对象
    类名( ) 创建对象的时候,python解释器会自动执行以下操作
    1.为对象在内存中分配空间–创建对象
    2.调用初始化方法为对象的属性设置初始值
    这个初始化方法是内置方法,是专门用来定义一个类据有哪些属性和方法的

    class Cat:
        def __init__(self,name):
            self.name = name
            print('这是一个初始化方法')
        def eat(self):
            print('%s 爱吃鱼' %(self.name))
        def drink(self):
            print('猫要喝水')
    
    tom = Cat('Tom')
    tom.eat()
    print(tom)
    
    hk = Cat('Hellokitty')
    hk.eat()
    

    在这里插入图片描述

    展开全文
  • Python3中子调用父类的初始化方法

    千次阅读 2019-09-07 11:16:29
    Python3中子如何调用父类的初始化方法python3中,子类可以重写父类的方法(及重载)。因为初始化方法是在创建对象时自动调用的,很容易在这方面出错。本文以子类调用父类初始化方法为切入点,解决此问题。 ...

    Python3中子类如何调用父类的初始化方法

    在python3中,子类可以重写父类的方法(及重载)。因为初始化方法是在创建对象时自动调用的,很容易在这方面出错。本文以子类调用父类初始化方法为切入点,解决此问题。

    通常有两类解决办法:

    方法一:在子类的初始化方法中,率先使用父类.__init__()来解决子类调用父类的初始化方法。代码如下,

    class family(object):
        def __init__(self,host):
            self.host=host
        def printf(self):
            print('the hoster of the family is %s.'%self.host)
    class myfamily(family):
        member=[]
        def __init__(self):
            family.__init__(self,host='xiaoli')
            #括号中的参数要包括self
            print('hi')
        def add_member(self,member):
            self.member.append(member)
        def print_member(self):
            print('there are %d member:%s'%(len(self.member),self.member))
    if __name__=='__main__':
        myfamily1=myfamily()
        myfamily1.add_member('xiaoduan')
        myfamily1.printf()
        myfamily1.print_member()

    输出结果为:

    hi
    the hoster of the family is xiaoli.
    there are 1 member:['xiaoduan']

    注意:通过父类.__init__(),括号内包括相应的参数,且self不可少。

    方法二:在子类初始化方法中,通过super()函数来调用父类(超类)的初始化方法,代码如下,

    class family(object):
        def __init__(self,host):
            self.host=host
        def printf(self):
            print('the hoster of the family is %s.'%self.host)
    class myfamily(family):
        member=[]
        def __init__(self):
            super(myfamily,self).__init__(host='xiaoli')
            #参数不包括self
            """
            super().__init__('xiaoli')结果一样
            """
            print('hi')
        def add_member(self,member):
            self.member.append(member)
        def print_member(self):
            print('there are %d member:%s'%(len(self.member),self.member))
    if __name__=='__main__':
        myfamily1=myfamily()
        myfamily1.add_member('xiaoduan')
        myfamily1.printf()
        myfamily1.print_member()

    输出结果为:

    hi
    the hoster of the family is xiaoli.
    there are 1 member:['xiaoduan']

    注意:super()的括号不可以缺少,另外,super().__init__('xiaoli')括号中的参数不包括self。

    上述两种方法,都可以解决子类调用父类初始化方法,但是第二种还可以解决多继承(python3支持多继承)中的子类调用父类。

    参考资料:https://www.runoob.com/python/python-func-super.html

     

    展开全文
  • 对象属性设置初始值—初始化方法(init) 自动调用__init__方法 这个初始化方法就是__init__方法,__init__是对象内置方法 __init__方法是专门用来定义一个具有哪些属性方法! ...

    初始化方法

    • 当使用类名()创建对象时,会自动执行以下操作
    1. 为对象在内存中分配空间—创建对象
    2. 为对象的属性设置初始值—初始化方法(init)
    3. 自动调用__init__方法
    4. 这个初始化方法就是__init__方法,__init__是对象的内置方法

    __init__方法是专门用来定义一个类具有哪些属性的方法!

    展开全文
  • 初始化方法的代码 特殊方法: 定义初始化方法的格式是def__init__(self),是由init两边下划线... 利用这个特性,在编写习惯上,我们会在初始化方法内部完成属性创建,为类属性设置初始值,这样其他方法...
  • 类的初始化过程和类的三种方法类的初始化过程类内的三种方法 类的初始化过程 在执行类的初始化的时候,比如a = A(),先是执行了__new__(cls) 方法,根据传入的cls来分配空间,然后再执行对象的__init__(self) 方法。...
  • 2.这个对象属性设置初始值----初始化方法(init) 这个初始化方法就是__init__方法,__init__是对象内置方法 __init__方法是专门用来定义一个具有哪些属性方法 class Cat: def __init__(self): ...
  •  带两个下划线__开头的函数是声明该属性私有,不能在类的外部被调用 Ex: 好处:确保了外部代码不能轻易修改对象内部的状态,通过访问限制保护,代码更加健壮 如果外部代码要获取内部变量的方法:定义get函数...
  • PYTHON---初始化方法

    千次阅读 2018-09-13 14:31:35
    初始化方法:__init__ 是python对象内置方法 __init__方法是专门用来定义一个具有哪些属性和方法 初始化方法 ...调用初始化方法为对象属性设置初始值--初始化方法(__init__) 这个初始化...
  • Python学习之初始化函数和类的继承

    千次阅读 2019-02-19 11:09:13
    初始化函数的意思是,当你创建一个实例的时候,这个函数就会被调用。...类的继承格式:class 新类(旧类),新类就可以继承旧类的所有类方法,并可以定制新的方法甚至覆盖旧类的方法。 练习 cl...
  • 而面向对象程序设计把计算机程序视一组对象集合,而每个对象都可以接收其他对象发过来消息,并处理这些消息,计算机程序执行就是一系列消息在各个对象之间传递。在Python中,所有数...
  • 在编写一个拓扑计算图的节点类时,更新实例节点的实例属性 `self.inputs`(inputslist类型)时,发现一个实例的更新,会引起继承该类的所有的inputs均会更新,经过反复的测试后,发现问题出现在`__init__()`中inputs...
  • PYTHON 定义,属性,初始化

    千次阅读 2020-05-01 17:12:02
    文章目录PYTHON 类定义,属性,初始化类定义类的私有属性类方法类的初始化和析构初始化析构 PYTHON 类定义,属性,初始化 为了代码的编写方便简洁,引入了类的定义; 一般,使用 class 语句来创建一个新类,class...
  • python:初始化方法( __init__)

    千次阅读 2019-02-06 22:28:20
    Python解释器会首先在内存中开辟一个足够的空间可以存下创建的对象,然后调用初始化方法,在初始化方法中给对象的所有属性设置初始值(为属性设置初始值的方法叫做初始化方法),对象的初始化方法为__init__方法。...
  • 初始化方法 作用: 对新创建对象添加实例变量(属性)或...1.初始化方法命名,必须__init__(双下滑) 2.初始化方法会在构造函数创建实例后,自动调用,且次实例自身通过第一个参数self传入__init__方法。 3.构造...
  • 初始化函数的意思是,当你创建一个实例的时候,这个函数就会被调用。...类的继承格式:class 新类(旧类),新类就可以继承旧类的所有类方法,并可以定制新的方法甚至覆盖旧类的方法Python初始化...
  • Python创建对象:对象名称=() class Point: ...2.初始化方法(init)—对象属性设置初始值 初始化方法:init,属于内置方法,指明一个对象初始化行为 创建一个初始化方法例子: class Cat()...
  • 定义或者初始化对象时 , 在属性前加 __ , 就会将该属性隐藏起来 但是该隐藏其实只是一种变形 _类名__属性名 该变形操作是在定义阶段扫描语法是发生变形 , 定义之后添加 **__**开头属性不会发生变形 ...
  • 学习本篇文章后会了解到:类的创建,对象添加属性,对象的初始化,自定义对象的输出,类属性和类方法的创建。 1. 类的定义与格式 类是对一群具有相同特征或者行为的事物的一个统称。 类是一个模块,是...
  • 1. 类的初始化方法__init__ 初始化方法: 类名() 就可以创建一个对象 类名() 创建对象的时候,python解释器会自动执行以下操作 1.为对象在内存中分配空间–创建对象 2.调用初始化方法为对象的属性设置初始值 这个...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 862
精华内容 344
关键字:

python类的初始化方法为

python 订阅