微信号:grzlwx

介绍:光荣之路官方资讯

学起来:Python 面向对象(六)

2015-10-18 21:49 光荣之路

吴老的《selenium webdriver 实战宝典》出版了!

方法重写

如果你的父类方法的功能不能满足你的需求,你可以在子类重写你父类的方法:

实例:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

class Parent: # 定义父类
def myMethod(self):
print '调用父类方法'

class Child(Parent): # 定义子类
def myMethod(self):
print '调用子类方法'

c = Child() # 子类实例
c.myMethod() # 子类调用重写方法

执行以上代码输出结果如下:

调用子类方法

基础重载方法

  下表列出了一些通用的功能,你可以在自己的类重写:


运算符重载

  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/python
# -*- coding: UTF-8 -*-

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 通过改变名称来包含类名:

2
Traceback (most recent call last):
File "test.py", line 17, in <module>
print counter.__secretCount # 报错,实例不能访问私有变量
AttributeError: JustCounter instance has no attribute '__secretCount'


Python不允许实例化的类访问私有数据,但你可以使用 object._className__attrName 访问属性,将如下代码替换以上代码的最后一行代码:

.........................
print counter._JustCounter__secretCount


执行以上代码,执行结果如下:

1
2
2
2

致谢,感谢您的阅读!

(完)

(作者:WhyWin 来源:http://www.cnblogs.com/0201zcr/p/4857600.html)


   
              
   
              
   
              
   
             
   
             
   
             
   
             
   
             
   
             
   
             
   
             
   
             
   
             

感谢作者,传播测试知识、技能与正能量!
欢迎来稿,分享你的测试生活!735821166@qq.com

光荣之路软件测试培训

官网:http://www.gloryroad.cn/

微信公众号:gloryroadtrain

性能测试QQ群:415987441
软件测试招聘QQ群: 203715128
自动化3群QQ: 371211499

 
光荣之路 更多文章 今天晚上的 linux 公开课- Awk 编程 7月28日(今天)晚上的 linux 公开课- shell编程 8月4日(今天)晚上的 linux 公开课- shell编程 9月1日(本周一)晚8点半,光荣之路Web自动化系列基础课—javascript第二讲 推荐本好书《与机器赛跑》
猜您喜欢 原Angular团队成员投身JavaScript框架Aurelia 再谈「搜索已死,推荐上位」 R语言入门第二讲:读取数据------函数read.table第二讲 北上广不相信眼泪,相信什么? 开创历史!SpaceX回收火箭全回顾