程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Access數據庫 >> Access數據庫入門 >> ADODB銜接access是湧現 80004005 毛病的處理辦法

ADODB銜接access是湧現 80004005 毛病的處理辦法

編輯:Access數據庫入門

ADODB銜接access是湧現 80004005 毛病的處理辦法。本站提示廣大學習愛好者:(ADODB銜接access是湧現 80004005 毛病的處理辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是ADODB銜接access是湧現 80004005 毛病的處理辦法正文


本文實例講述了Python中super症結字用法。分享給年夜家供年夜家參考。詳細剖析以下:

在Python類的辦法(method)中,要挪用父類的某個辦法,在Python 2.2之前,平日的寫法如代碼段1:

代碼段1:

class A:
def __init__(self):
  print "enter A"
  print "leave A"
class B(A):
def __init__(self):
  print "enter B"
  A.__init__(self)
  print "leave B"
>>> b = B()

enter B
enter A
leave A
leave B

即,應用非綁定的類辦法(用類名來援用的辦法),並在參數列表中,引入待綁定的對象(self),從而到達挪用父類的目標。

如許做的缺陷是,當一個子類的父類產生變更時(如類B的父類由A變成C時),必需遍歷全部類界說,把一切的經由過程非綁定的辦法的類名全體調換過去,例如代碼段2,

代碼段2:

class B(C):  # A --> C
def __init__(self):
  print "enter B"
  C.__init__(self) # A --> C
  print "leave B"

假如代碼簡略,如許的修改也許還可以接收。但假如代碼量宏大,如許的修正能夠是災害性的。很輕易招致修正毛病的湧現。

是以,自Python 2.2開端,Python添加了一個症結字super,來處理這個成績。上面是Python 2.3的官方文檔解釋:

super(type[, object-or-type])
Return the superclass of type. If the second argument is omitted the super object
returned is unbound. If the second argument is an object, isinstance(obj, type) 
must be true. If the second argument is a type, issubclass(type2, type) must be 
true. super() only works for new-style classes.
A typical use for calling a cooperative superclass method is:
  class C(B):
    def meth(self, arg):
      super(C, self).meth(arg)
New in version 2.2.

從解釋來看,可以把類B改寫如代碼段3:

代碼段3:

class A(object):  # A must be new-style class
def __init__(self):
  print "enter A"
  print "leave A"
class B(C):   # A --> C
def __init__(self):
  print "enter B"
  super(B, self).__init__()
  print "leave B"

測驗考試履行下面異樣的代碼,成果分歧,但修正的代碼只要一處,把代碼的保護量降到最低,是一個不錯的用法。是以在我們的開辟進程中,super症結字被年夜量應用,並且一向表示優越。

1. super其實不是一個函數,是一個類名,形如super(B, self)現實上挪用了super類的初始化函數,發生了一個super對象;

2. super類的初始化函數並沒有做甚麼特別的操作,只是簡略記載了類類型和詳細實例;

3. super(B, self).func的挪用其實不是用於挪用以後類的父類的func函數;

4. Python的多繼續類是經由過程mro的方法來包管各個父類的函數被一一挪用,並且包管每一個父類函數只挪用一次(假如每一個類都應用super);

5. 混用super類和非綁定的函數是一個風險行動,這能夠招致應當挪用的父類函數沒有挪用或許一個父類函數被挪用屢次。

從super症結字的help我們也能看出來。

Help on class super in module __builtin__:
class super(object)
 |  super(type) -> unbound super object
 |  super(type, obj) -> bound super object; requires isinstance(obj, type)
 |  super(type, type2) -> bound super object; requires issubclass(type2, type)
 |  Typical use to call a cooperative superclass method:
 |  class C(B):
 |      def meth(self, arg):
 |           super(C, self).meth(arg)
 | 
 |  Methods defined here:
.......

從下面也能看出來,super是一個類,並且是__builtin__模塊中的。

從下面的描寫來看,super重要是用於挪用父類的辦法。

那末,在2.2之前的辦法也能挪用。為啥非得用super呢?

這是由於super可以或許阻攔對父類辦法的屢次挪用。

super,轉變了父類搜刮次序, 前往的是一個特別的父類對象
看例子:

class A: pass class B(A): pass class C(A):pass class D(B, C): pass

這是4個類的根本關系。

假設不應用super,讓D的對象挪用他們共有的一個辦法,會2次挪用A中這個辦法。

願望本文所述對年夜家的Python法式設計有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved