WEB开发网
开发学院软件开发Python [Python 学习笔记] 9: Class 阅读

[Python 学习笔记] 9: Class

 2009-10-13 00:00:00 来源:WEB开发网   
核心提示: 继承Python 支持多继承,但有几点需要注意:1. 基类 __init__ / __del__ 需显示调用,[Python 学习笔记] 9: Class(2),2. 继承方法的调用和基类声明顺序有关,>>>classBase1:def__init__(self):print&

继承

Python 支持多继承,但有几点需要注意:

1. 基类 __init__ / __del__ 需显示调用。

2. 继承方法的调用和基类声明顺序有关。

>>> class Base1:
  def __init__(self):
    print "Base1"
  def test(self):
    print "Base1 test..."
 
>>> class Base2:
  def __init__(self):
    print "Base2"
  def test(self):
    print "Base2 test..."
 
>>> class Class1(Base2, Base1):
  def __init__(self):
    Base1.__init__(self)
    Base2.__init__(self)
    print "Class1"
 
>>> a = Class1()
Base1
Base2
Class1
>>> a.test()
Base2 test...

成员

Python Class 同样包含类型和实例两种成员。

>>> class Class1:
  i = 123 # Class Field
  def __init__(self):
    self.i = 12345 # Instance Field
    
>>> print Class1.i
123
>>> print Class1().i
12345

有几个很 "特殊" 的 "规则" 需要注意。

(1) 我们可以通过实例引用访问类型成员。因此下面的例子中 self.i 实际指向 Class1.i,直到我们为实例新增了一个成员 i。

>>> class Class1:
  i = 123
  def __init__(self):
    print self.i 
    print hex(id(self.i))
    
>>> hex(id(Class1.i)) # 显示 Class1.i
'0xab57a0'
>>> a = Class1() # 创建 Class1 实例,我们会发现 self.i 实际指向 Class1.i。
123
0xab57a0
>>> Class1.__dict__ # 显示 Class1 成员
{'i': 123, '__module__': '__main__', '__doc__': None, '__init__': <function __init__ at 0x00D39470>}
>>> a.__dict__ # 显示实例成员
{}
>>> a.i = 123456789 # 为实例新增一个成员 i
>>> hex(id(a.i)) # 显示新增实例成员地址
'0xbbb674'
>>> a.__dict__ # 显示实例成员
{'i': 123456789}

上一页  1 2 3 4 5 6 7  下一页

Tags:Python 学习 笔记

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接