[python 基础] Class 一些基本概念
class example(object):
data1 = ''
date2 = "" def __init__(self, para):
self._function1() def _function1(self):
self.data1="test data"
print example().data1
1.根据需要可以把类里面的全局变量定义在最前面(data1,data2),内部function可以用self.方便直接修改数据。如果一个类里面有公共数据使用此方法比较方便,外部可以通过访问对象属性方法直接访问类里面数据。
2. 根据需要可以将类的内部方法调用写在__init__方法里面,这样可以避免外部显示调用内部类里面的方法,使代码更加简洁,清楚。__init__方法会在类实例化时候自动执行,类似于一个C++构造函数。
3. 访问内部的数据、方法,需要加self.
4. 只有将类实例化后,才能访问到里面的方法。如果使用example.data1的方法,data1的内容不会改变,因为只是访问了类的一个属性,并没有将类实例化,因此内部_function1()也没有被执行
5.类内部定义的方法不能直接调用,否则会引发NameError的异常。
关于self参数
1.self 是类下面的一个object,通常指的是定义这个类。如果定义一个类:
class MyInt(object):
varA = ""
def __getitem__(self, key):
print type(self)
print "this is self value:"
print self
a = MyInt().__getitem__("")
打印结果:
<class '__main__.MyInt'>
this is self value:
<__main__.MyInt object at 0x01BA6630>
可以看到self打印出来是一个'__main__.MyInt'的对象。实际上self应该是 一个MyInt的类。如第一个例子所示,在需要调用上一层类里面定义的方法和数据的时候,需要用"self."表示。有人觉得self在类里面的函数作为第一个默认参数多此一举,其实不然;如果没有self这个对自己类的应用,每次用写类名的方法(e.g:MyInt.varA)去调用方法和变量会更显得麻烦。
关于继承
class MyInt(int):
def __getitem__(self, key):
return key + str(self)
a = MyInt(1)
b = MyInt(2)
print a['key']
打印输出结果是:“key1”。从这段代码可以看出,虽然a并不是一个字典类型,但是由于MyInt 这个类里面重构了字典内建的查询方法__getitem__(). a['key']仍然执行成功了,也可以推断出,一个字典类型数据在执行dic[key]这个语句时候实际上是在调用内建方法__getitem__()获取到的value,并且也可以推断出python在执行a['key']这一条语句时候,并不会事先去判断这个数据是否是字典类,而是会直接去调用__geitem__()这个内建方法。采用这种重构的方法可以自定义python里面的数据类型,不过一般不建议使用。因为很容易造成代码混乱。
[python 基础] Class 一些基本概念的更多相关文章
- python基础语法_9-0函数概念
http://www.runoob.com/python3/python3-function.html 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代 ...
- Python基础篇(四)_组合数据类型的基本概念
Python基础篇——组合数据类型的基本概念 集合类型:元素的集合,元素之间无序 序列类型:是一个元素向量,元素之间存在先后关系,通过序号进行访问,没有排他性,具体包括字符串类型.元组类型.列表类型 ...
- Python 简明教程 --- 3,Python 基础概念
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 控制复杂性是计算机编程的本质. -- Brian Kernighan 了解了如何编写第一个Pytho ...
- Python之路3【第一篇】Python基础
本节内容 Python简介 Python安装 第一个Python程序 编程语言的分类 Python简介 1.Python的由来 python的创始人为吉多·范罗苏姆(Guido van Rossum) ...
- 进击的Python【第三章】:Python基础(三)
Python基础(三) 本章内容 集合的概念与操作 文件的操作 函数的特点与用法 参数与局部变量 return返回值的概念 递归的基本含义 函数式编程介绍 高阶函数的概念 一.集合的概念与操作 集合( ...
- Python基础+Pythonweb+Python扩展+Python选修四大专题 超强麦子学院Python35G视频教程
[保持在百度网盘中的, 可以在观看,嘿嘿 内容有点多,要想下载, 回复后就可以查看下载地址,资源收集不易,请好好珍惜] 下载地址:http://www.fu83.cc/ 感觉文章好,可以小手一抖 -- ...
- python基础——类和实例
python基础——类和实例 面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都 ...
- python基础——面向对象编程
python基础——面向对象编程 面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的 ...
- python基础——装饰器
python基础——装饰器 由于函数也是一个对象,而且函数对象可以被赋值给变量,所以,通过变量也能调用该函数. >>> def now(): ... print('2015-3-25 ...
随机推荐
- PAT 1059. Prime Factors (25) 质因子分解
题目链接 http://www.patest.cn/contests/pat-a-practise/1059 Given any positive integer N, you are suppose ...
- Java中的深复制与浅复制
1.浅复制与深复制概念 ⑴浅复制(浅克隆) 被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象.换言之,浅复制仅仅复制所考虑的对象,而不 复制它所引用的对象. ...
- Fiddler 教程(转)
阅读目录 Fiddler的基本介绍 Fiddler的工作原理 同类的其它工具 Fiddler如何捕获Firefox的会话 Fiddler如何捕获HTTPS会话 Fiddler的基本界面 Fiddler ...
- DM365视频处理流程/DM368 NAND Flash启动揭秘
出自http://blog.csdn.net/maopig/article/details/7029930 DM365的视频处理涉及到三个相关处理器,分别是视频采集芯片.ARM处理器和视频图像协处理器 ...
- zabbix 通过gateway 获取远程主机的JMX信息
DBHost=192.168.32.55 DBName= zabbix DBUser=zabbixuser DBPassword=zabbixpass StartTrappers=20 MaxHous ...
- 剑指offer-面试题23.从上往下打印二叉树
题目:从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印.例如输入图4.5中 的二叉树,则依次打印出8.6.10.5.7.9.11二叉树结点的定义如下: struct BinaryTr ...
- Linux MySql安装步骤
本文将以MySQL 5.5.47为例,以CentOS 6.5为平台,讲述MySQL数据库的安装和设置. 源码包方式安装 1.新建MySql用户和用户组 groupadd mysql useradd - ...
- Unity 扩展属性自定义绘制
这么晚了准备睡觉的时候,去学习了一会. 发现一个标题好奇的点进去. 居然是自定义绘制属性. 在前几天这个问题把我难住了,没想到几分钟就能解决的问题. 我花了半天时间使用反射去解决... 如果我们想 ...
- 安装jansson库【JSON库C语言版】
本次操作在Ubuntu 14.04下进行,其他的系统大同小异,安装软件时请根据系统版本进行调整. 1.下载jansson源码: git clone https://github.com/akheron ...
- Oracle SQL函数之字符串函数
1.SQL> ) from dual; --ASCLL(x)返回x的ASCLL码,CHR(x)返回ASCLL码为x的字符 ASCII() ---------- ---------- ------ ...