python初步学习-面向对象之 类(二)
方法重写
如果你的父类方法的功能不能满足你的需求,你可以在子类重写你父类的方法:
#!/usr/bin/env python
#coding:utf8
class Parent:
    def myMethod(self):
        print '调用父类方法'
class Child(Parent):
    def myMethod(self):
        print '调用子类方法'
c = Child()
c.myMethod()
执行以上代码输出结果如下:
调用子类方法
下表列出了一些通用的功能,你可以在自己的类中重写:
| 序号 | 方法,描述&简单的调用 | 
|---|---|
| 1 | __init__(self[,args...]):构造函数,简单的调用方法:obj = className(args) | 
| 2 | __del__(self):删除一个对象,简单的调用方法:del obj | 
| 3 | __repr__(self):转化为供解释器读取的形式,简单的调用方法:repr(obj) | 
| 4 | __str__(self):用于将值转化为适用于人阅读的形式 | 
| 5 | __cmp__(self,x):对象比较,简单的调用方法:cmp(obj,x) | 
运算符重写
python同样支持运算符重写,示例如下
#!/usr/bin/python
class Vector:
   def __init__(self, a, b):
      self.a = a
      self.b = b
   def __str__(self):
      return 'Vector (%d, %d)' % (self.a, self.b)
   def __add__(self,other):
      return Vector(self.a + other.a, self.b + other.b)
v1 = Vector(2,10)
v2 = Vector(5,-2)
print v1 + v2
以上代码执行结果如下所示:
Vector(7,8)
类属性与方法
类的私有属性
__private_attrs:两个下划线开头,声明该属性为私有,不能在类的外部被使用或者直接访问,在类内部使用self.__private_attrs
类的方法
在类的内部,使用def关键字可以为类定义一个方法,与一般函数定义不同,类方法必须包含参数self,且为第一个参数
类的私有方法
__private_method:两个下划线开头,声明该方法为私有方法,不能在类的外部调用。在类的内部调用self.__private_methods
实例:
#!/usr/bin/env python
#coding:utf8
class JustCounter:
    __secretCount = 0   #私有变量
    publicCount = 0     #公共变量
    def count(self):
        self.__secretCount += 1
        self.publicCount += 1
        print self.__secretCount
counter = JustCounter()
counter.count()
counter.count()
print counter.publicCount
print counter.__secretCount     #报错,实例不能访问私有变量
python不允许实例化的类访问私有数据,但你可以使用object.__className__attrName访问属性,将如下代码替换以上代码的最后一行代码
print counter._JustCounter__secretCount
执行以上代码,执行结果如下:
1
2
3
4
单下划线、双下划线、头尾双下划线说明:
__foo__:定义的是特殊方法,一般是系统定义名字,类似__init__()_foo:以单下划线开头的表示是protected类型的变量,即保护类型只能允许其本身与子类进行访问,不能用于from module import *这种导入方式__foo:双下划线的表示的是私有类型(private)的变量,只能是允许这个类本身进行访问了。
python初步学习-面向对象之 类(二)的更多相关文章
- python初步学习-面向对象之类(一)
		
python 面向对象 python 从设计之初就已经是一门面向对象的语言,正因为如此,在python中创建一个类和对象是很容易的. 对象对象奇数简介 类(Class): 用于描述具有相同的属性和方法 ...
 - python入门学习:8.类
		
python入门学习:8.类 关键点:类 8.1 创建和使用类8.2 使用类和实例8.3 继承8.4 导入类 8.1 创建和使用类 面向对象编程是最有效的软件编写方法之一.在面向对象编程中,你编写 ...
 - python语法学习面向对象之继承
		
python语法学习面向对象之继承 转载自:http://www.cnblogs.com/Joans/archive/2012/11/09/2757368.html 只要涉及到面向对象,”类“是必须出 ...
 - python进阶01 面向对象、类、实例、属性封装、实例方法
		
python进阶01 面向对象.类.实例.属性封装.实例方法 一.面向对象 1.什么是对象 #一切皆对象,可以简单地将“对象”理解为“某个东西” #“对象”之所以称之为对象,是因为它具有属于它自己的“ ...
 - 转 python语法学习面向对象之继承
		
传送门 python语法学习面向对象之继承 只要涉及到面向对象,”类“是必须出现的一个代名词. 类和对象是面向对象编程的两个主要方面.类创建一个新类型,而对象是这个类的实例. 类的一些概念: 包括初始 ...
 - Python如何设计面向对象的类(上)
		
Python是一门高级语言,支持面向对象设计,如何设计一个符合Python风格的面向对象的类,是一个比较复杂的问题,本文提供一个参考,表达一种思路,探究一层原理. 目标 期望实现的类具有以下基本行为: ...
 - python学习之【第十七篇】:Python中的面向对象(类和对象)
		
1.什么是类和类的对象? 类是一种数据结构,我们可以用它来定义对象,后者把数据值和行为特性融合在一起,类是现实世界的抽象的实体以编程形式出现.实例是这些对象的具体化.类是用来描述一类事物,类的对象指的 ...
 - 22.python中的面向对象和类的基本语法
		
当我发现要写python的面向对象的时候,我是踌躇满面,坐立不安呀.我一直在想:这个坑应该怎么爬?因为python中关于面向对象的内容很多,如果要讲透,最好是用面向对象的思想重新学一遍前面的内容.这个 ...
 - python初步学习
		
一.字符编码 ASCII表是是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256-1,所以,ASCII码最多只能表示 ...
 
随机推荐
- Mware中CentOS设置静态IP
			
Mware中CentOS设置静态IP 因为之前搭建的MongoDB分片没有采用副本集,最近现网压力较大,所以准备研究一下,于是在自己电脑的虚拟机中搭建环境,但是发现之前VMware设置的是DHCP ...
 - utuntu下安装eclipse+jdk
			
安装jdk: 1.下载一个可以用的jdk压缩包.下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads- ...
 - Kafka生产者各种启动参数说明
			
首先是启动一个生产者 final String kafkazk="localhost:9092"; String topic="testAPI"; Proper ...
 - mvc4中使用angularjs实现一个投票系统
			
数据库是用EF操作,数据表都很简单中,从代码中也能猜出表的结构,所以关于数据库表就不列出了 投票系统实现还是比较简单,投票部分使用ajax实现,评论部分是使用angularjs实现,并且页面每隔几秒( ...
 - BZOJ3620 似乎在梦中见过的样子(kmp)
			
不是很懂为什么数据范围要开的这么诡异,想到正解都不敢写.用类似NOI2014动物园的方法,对每个后缀求出类似next的数组即可. #include<iostream> #include&l ...
 - C++解析(4):引用的本质
			
0.目录 1.引用的意义 2.特殊的引用 3.引用的本质 4.函数返回引用 5.小结 1.引用的意义 引用作为变量別名而存在,因此在一些场合可以代替指针 引用相对于指针来说具有更好的可读性和实用性 注 ...
 - QoS专题-第1期-QoS理论篇
			
QoS理论篇 1 QoS的产生 随着网络技术的飞速发展,IP网络已经从当初的单一数据网络向集成数据.语音.视频.游戏的多业务网络转变.网络中所承载的数据呈几何级倍数增长,而且这些业务对网络带 ...
 - Eclipse开发Java代码,如何添加智能提示
			
选择:Window->Preferences->JAVA->Editor->Context Assist 在Auto activation triggers for Java处 ...
 - Codeforces 906B. Seating of Students(构造+DFS)
			
行和列>4的可以直接构造,只要交叉着放就好了,比如1 3 5 2 4和2 4 1 3 5,每一行和下一行用不同的方法就能保证没有邻居. 其他的可以用爆搜,每次暴力和后面的一个编号交换并判断可行性 ...
 - 《javascript高级程序设计(第3版)》-1
			
javascript有下列三个不同的部分组成: ECMAScript,由ECMA-262定义,提供核心语言功能 文档对象模型(DOM),提供访问和操作网页内容的方法和接口 浏览器对象模型(BOM),提 ...