ksnowlv

回顾过去,总结以往;立足现在,铭记当下;技术为主,笔记而已.

Python面向对象函数重载

| Comments

python支持函数重载,和C++/Objective-c/Java类似。

适用场景:父类的方法不能满足你的需求.

代码示例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/usr/bin/python

class QBaseClass(object):
  """QBaseClass class"""
  def __init__(self, name):
      super(QBaseClass, self).__init__()
      self.name = name

  def showMessage(self):
      print "className = %s"  % (QBaseClass.__name__)



class QPerson(QBaseClass):
  """QPerson class"""
  def __init__(self, name,address):
      super(QPerson, self).__init__(name)
      self.address = address

  def showMessage(self):
      print "className = %s, address = %s "  % (QPerson.__name__, self.address)




p1 = QPerson("ksnowlv","北京市朝阳区")
p1.showMessage()
#下面是调用p1父类的同名方法,看起来是不是和Objective-c类似
super(QPerson,p1).showMessage()
QBaseClass.showMessage(p1)

运行结果如下:

ksnowlv@ksnowlvdeMacBook-Pro~/Documents/lvwei projects/python$python overloadmethod.py 
className = QPerson, address = 北京市朝阳区
className = QBaseClass
className = QBaseClass

下面两种写法虽然执行结果相同,那有什么不同呢?

1
2
super(QPerson,p1).showMessage()
QBaseClass.showMessage(p1)

Comments

comments powered by Disqus
Included file 'custom/after_footer.html' not found in _includes directory