Python中__init__方法
注意1、__init__并不相当于C#中的构造函数,执行它的时候,实例已构造出来了。
1
2
3
4
5
|
class A( object ): def __init__( self ,name): self .name = name def getName( self ): return 'A ' + self .name |
当我们执行
1
|
a = A( 'hello' ) |
时,可以理解为
1
2
|
a = object .__new__(A) A.__init__(a, 'hello' ) |
即__init__作用是初始化已实例化后的对象。
注意2、子类可以不重写__init__,实例化子类时,会自动调用超类中已定义的__init__
1
2
3
4
5
6
7
|
class B(A): def getName( self ): return 'B ' + self .name if __name__ = = '__main__' : b = B( 'hello' ) print b.getName() |
但如果重写了__init__,实例化子类时,则不会隐式的再去调用超类中已定义的__init__
1
2
3
4
5
6
7
8
9
|
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__方法
1
2
3
4
5
6
7
8
9
|
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() |
Python中__init__方法的更多相关文章
- Python中__init__方法介绍
本文介绍Python中__init__方法的意义. __init__方法在类的一个对象被建立时,马上运行.这个方法可以用来对你的对象做一些你希望的 初始化 .注意,这个名称的开始和结尾 ...
- Python中__init__方法/__name__系统变量讲解
__init__方法在类的一个对象被建立时,马上运行.这个方法可以用来对你的对象做一些你希望的初始化. 代码例子 test.py#!/usr/bin/python# Filename: class_i ...
- python 中 __init__方法
注意1,__init__并不相当于C#中的构造函数,执行它的时候,实例已构造出来了. class A(object): def __init__(self,name): self.name=name ...
- Python中__init__()方法注意点
此文转自https://www.cnblogs.com/zyxstar2003/archive/2011/03/21/1989954.html 1.__init__并不相当于C#中的构造函数,执行它的 ...
- Python 类中__init__()方法中的形参与如何修改类中属性的值
一.__init__()方法 如果__init__()方法为 class Cat(): def __init__(self,num) : self.num=num Python中类的__init__( ...
- Python中sorted()方法的用法
Python中sorted()方法的用法 2012-12-24 22:01:14| 分类: Python |字号 订阅 1.先说一下iterable,中文意思是迭代器. Python的帮助文档中对i ...
- 转载:【学习之家】Python中__init__.py文件的作用
Python中__init__.py文件的作用详解 Python中__init__.py文件的作用详解 来源:学习之家 作者:xuexi110 人气:357 发布时间:2016-09-29 摘要:__ ...
- Python中sorted()方法
Python中sorted()方法的用法 1.先说一下iterable,中文意思是迭代器. Python的帮助文档中对iterable的解释是:iteralbe指的是能够一次返回它的一个成员的对象.i ...
- python中__init__.py文件的作用
问题 在执行models.py时,报ImportError:No module named transwarp.db的错误,但明明transwarp下就有db.py文件,路径也没有错误.真是想不通.后 ...
随机推荐
- 关于cookie 取不到值的问题
当前我们设置cookie时,跨路径的话,我们会取不到设置的cookie的值 我们要添加上path路径的值,就可以啦.(经过验证) path 的设置方法:path=/; function setcook ...
- JDBC中连接MySQL数据库
package qddx.JDBC; import java.sql.*; public class JDBC_Connection { static String driverName = &quo ...
- Clojure web初探
项目环境:3.2.0-52-generic #78-Ubuntu SMP Fri Jul 26 16:21:44 UTC 2013 x86_64 x86_64 x86_64 GNU/LinuxLein ...
- ✡ leetcode 171. Excel Sheet Column Number 字母转换为数字 --------- java
Related to question Excel Sheet Column Title Given a column title as appear in an Excel sheet, retur ...
- Ubuntu配置VNC server
安装vncserver后,默认的配置下只有一个很"朴素"的图形界面(没有抓图,就一个黑白窗口),要支持Ubuntu的桌面,并且支持和windows之前复制粘贴文字,需要修改xsta ...
- Eclipse中的Link with Editor功能是如何实现
Eclipse中的Link with Editor功能是如何实现 - kaukiyou的专栏 - 博客频道 - CSDN.NEThttp://blog.csdn.net/kaukiyou/articl ...
- 一次失败的Selenium chromedriver切换
背景 Selenium webdriver一直使用Firefox作为浏览器来跑webtest, 但是最近发现ff有时会报超时的错误,于是想到使用chromedriver来提升稳定性.本想只把.fire ...
- Android学习十一:高德地图使用
写这篇文章主要有三个目的: 1.使用高德地图api定位 2.获取天气数据 3.编程练手 文件结构 清单文件信息说明: <?xml version="1.0" encoding ...
- java-final关键字
一.final理解 编程语言中关键字,final类不能被继承,因此final类的成员方法没有机会被覆盖,默认都是final的.在设计类时候,如果这个类不需要有子类,类的实现细节不允许改变,并且确信这个 ...
- python-print
%s,%d就是占位符.还有%r 只是说明这样的对应:%s-->str();%r-->repr(),什么意思呢?就是说%s调用的是str()函数把对象转化为str类型,而%r是调用了repr ...