python - 构造函数

1. 如果子类定义了自己的__init__构造方法函数,当子类的实例对象被创建时,子类只会执行自己的__init__方法函数,如果子类未定义自己的构造方法函数,会沿着搜索树找到父类的构造方法函数去执行父类里的构造方法函数。

2. 如子类定义了自己的构造方法函数,如果子类的构造方法函数内没有主动调用父类的构造方法函数,那父类的实例变量在子类不会在刚刚创建子类实例对象时出现了。

[[email protected] day8]# cat t4.py

#!/usr/bin/env python
class aa:  
        def __init__(self):  
                self.x = 10  
                self.y = 12  
        def hello(self, x):  
                return x + 1  
class bb(aa):  
        def __init__(self):                 
                aa.__init__(self)  
                self.z = 14  
          
          
a = aa()  
print a.x, a.y  
b = bb()  
print b.x, b.y

[[email protected] day8]# python t4.py

10 12

10 12

要是没有调用父类的构造函数结果报错

[[email protected] day8]# cat t4.py

#!/usr/bin/env python
class aa:  
        def __init__(self):  
                self.x = 10  
                self.y = 12  
        def hello(self, x):  
                return x + 1  
class bb(aa):  
        def __init__(self):                 
                #aa.__init__(self)  
                self.z = 14  
          
          
a = aa()  
print a.x, a.y  
b = bb()  
print b.x, b.y

[[email protected] day8]# python t4.py

10 12

Traceback (most recent call last):

File "t4.py", line 18, in <module>

print b.x, b.y

AttributeError: bb instance has no attribute ‘x‘

时间: 2024-10-11 10:51:20

python - 构造函数的相关文章

Python 构造函数、 Python 析构函数、Python 垃圾回收机制

构造函数与析构函数 构造函数: 用于初始化类的内容部状态,Python提供的构造函数式 __init__(); __init__()方法是可选的,如果不提供,Python 会给出默认的__init__方法 一般数据的获取需要定义的get和set方法 析构函数: 用于释放对象占用的资源,Python 提供的析构函数式__del__(); __del__()也是可选的,如果不提供,则Python 会在后台提供默认析构函数 如果要显式的调用析构函数,可以使用del关键字,方式如下: del对象名 垃圾

Python构造函数学习笔记

在Python开发(http://www.maiziedu.com/course/python-px/)编程语言中有种函数叫构造函数,在这个函数里面有一个关键词叫self,首先明确的是self只有在类的方法中才会有,独立的函数或方法是不必带有self的.下面就讲讲self关键词在构造函数中的使用方法. 构造 class FooBar: def _int_(self): self.somevar = 42 >>>f = FooBar() >>>f.somevar42 重写

python 构造函数__new__(cls[,...]),析构器__del__()

1 class capstr(str): 2 def __new__(cls,string): 3 string=string.upper() 4 return str.__new__(cls,string) 5 6 a=capstr('ifuckyou') 7 print a __new__是构造函数-------实例对象的建立 继承字符串类str,把字符串大写,然后用str.__new__()返回处理后的大写字符串 不同于__init__(),init是初始化函数,new才是构造函数,真正返

Python的面向对象、Class 概念与使用

Class(类)的基本概念: 类:将同一种具体事务的共同点抽象出来的表现,Python的类是一种可调用对象. 类中定义的有方法,变量,数据结构. 变量则是类属性本身是没有数据的,只有在实例化的时候将数据引入. 方法就是函数:是操作变量引用的数据的代码,可以知道方法是操作数据的,由于类中不包含数据,所以类无法调用方法,只有实例化引入数据成为实例(也称为对象)才可以调用方法. 对象的由来: 对象(也称为实例)本身是没有方法的,对象引用的方法是在类中定义的也叫类函数,或者叫接口. 同属一类实例化的对象

python中的构造函数和构造函数和析构函数的作用

构造函数和构造函数和析构函数都属于python中的特殊方法 其中的"__del__"就是一个析构函数了,当使用del 删除对象时,会调用他本身的析构函数,另外当对象在某个作用域中调用完毕,在跳出其作用域的同时析构函数也会被调用一次,这样可以用来释放内存空间

python中的构造函数和析构函数

python中的特殊方法,其中两个,构造函数和析构函数的作用: 比说“__init__”这个构造函数,具有初始化的作用,也就是当该类被实例化的时候就会执行该函数.那么我们就可以把要先初始化的属性放到这个函数里面.如下程序: 其中的“__del__”就是一个析构函数了,当使用del 删除对象时,会调用他本身的析构函数,另外当对象在某个作用域中调用完毕,在跳出其作用域的同时析构函数也会被调用一次,这样可以用来释放内存空间. 待深入……………………

python字典构造函数dict(mapping)解析

Python字典的构造函数有三个,dict().dict(**args).dict(mapping),当中第一个.第二个构造函数比較好理解也比較easy使用, 而dict(mapping)这个构造函数的使用比較难理解. 1 dict()构造函数能够返回一个空的字典 In [7]: d = dict() In [8]: print d {} In [9]: 2 dict(**arg)构造函数,传入參数用赋值表达式,可多个赋值表达式.用逗号间隔就可以. In [9]: d = dict(a = 12

python学习笔记——旧类与新类继承中的构造函数

旧类以调用未绑定的超类构造方法 class OldDog: def __init__(self): print 'I am a old dog !' self.__hungry = True def eat(self): if self.__hungry: print 'I eat it !' self.__hungry = False else: print 'No thanks!' class OldWolf(OldDog): def __init__(self): OldDog.__ini

python 类的创建、实例化、构造函数、私有属性

例子: #!/usr/bin/env python class people:         def __init__(self,name):                 self.name = name         def __sayHi(self):                 print 'How do you do!'         def printname(self):                 print 'Hi,%s' % self.name