程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 淺析翻開eclipse湧現Incompatible JVM的處理辦法

淺析翻開eclipse湧現Incompatible JVM的處理辦法

編輯:關於JAVA

淺析翻開eclipse湧現Incompatible JVM的處理辦法。本站提示廣大學習愛好者:(淺析翻開eclipse湧現Incompatible JVM的處理辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是淺析翻開eclipse湧現Incompatible JVM的處理辦法正文


起首來看一個例子,正常情形下我們界說而且實例一個類以下

class Foo(object):
 
  def __init__(self):
    pass
 
obj = Foo()  # obj是經由過程Foo類實例化的對象

上述代碼中,obj 是經由過程 Foo 類實例化的對象,其實,不只 obj 是一個對象,Foo類自己也是一個對象,由於在Python中一切事物都是對象。

print type(obj) # 輸入: Foo 表現,obj 對象由Foo類創立
print type(Foo) # 輸入:type表現,Foo類對象由 type 類創立
假如依照一切事物都是對象的實際:對象是經由過程履行Foo類的結構辦法創立,那末Foo類對象應當也是經由過程履行某個類的 結構辦法 創立。

1、兩個根本的類
這裡和有需要提到一下在Python中有兩個最根本的對象,<type ‘object'> 和 <type ‘type'>,這兩個對象是一切對象的來源。

1、<type ‘type'>的類型是<type ‘type'>(它自己),<type ‘type'>的父類是<type ‘object'>
2、<type ‘object'>的類型是<type ‘type'>,<type ‘object'>沒有父類
在Python對象體系中,<type ‘object'>和<type ‘type'>的關系就像雞和蛋的關系,不克不及說誰先於(創立)誰,二者是互相依附的,配合組成了Python對象體系的基本.有點難懂得,不外沒有關系,曉得有種這麼兩個器械就行了,比擬我們也不是設計Python的人,沒有需要弄的那末清晰.

2、類的創立
重要有兩種方法,不外實質上都是一樣的,都是經由過程type類來實例一個用戶類

//通俗方法
  class Foo(object):
   
  def func(self):
  print 'hello wupeiqi'

//特別方法(type類的結構函數)
  def func(self):
    print 'hello wupeiqi'
  
  Foo = type('Foo',(object,), {'func': func})
 #type第一個參數:類名
 #type第三個參數:類的成員

由下面可以看出來 , Foo類是由type類實例而來,那末詳細的創立的進程是怎樣樣的呢,接著往上面看:

來懂得幾個概念
new 和 __init()和__metaclass__:

  • __new__函數是實例一個類所要挪用的函數,每當我們挪用obj = Foo()來實例一個類時,都是先挪用__new__()
  • 然後再挪用__init__()函數初始化實例. __init__()在__new__()履行後履行,
  • 類中還有一個屬性 __metaclass__,其用來表現該類由 誰 來實例化創立,所以,我們可認為 __metaclass__ 設置一個type類的派生類,從而檢查 類 創立的進程。

3、論述運轉進程

1、mytype發生一個叫做Foo的實例,重要的道理就是設置了,__metaclass__=MyTypoe,如許就指定mytype類來實例foo類,假如Python沒有找到__metaclass__,它會持續在(父類)中尋覓 __metaclass__屬性,並測驗考試做和後面異樣的操作。假如Python在任何父類中都找不到__metaclass__,它就會在模塊條理中去尋覓__metaclass__,並測驗考試做異樣的操作。假如照樣找不到__metaclass__,Python就會用內置的type來創立這個類對象。
2、mytype類中的__new__辦法前往了一個對象,一切的Python實例都是這句代碼創立的type.__new__(cls,name,bases,attrs)
3、mytype的__init__()函數初始化Foo類,在這裡我們可以和在__new__()函數一樣設置Foo類的attr屬性,好比類中的辦法,字段屬性等
4、和Foo類的創立進程一樣,studen類繼續了Foo類,所以反復123步調,獲得一個studen類
5、當用戶應用Foo()或許studen()來實例類時,會默許挪用類中的_new_()辦法,如果之類外面沒有這個辦法就到父類外面尋覓__new__(),我們可以充足應用這個new函數,好比來完成Python中的單例形式,或許對類成員停止批量的修正等等.
6、發生了一個實例後立時履行__init__()函數,停止初始化實例,
7、由下面的運轉成果可以看出,個中Foo和studen類的類型是<class '__main__.MyType'>,這也證實了Foo類和studen類都是由MyType實例而來…而第三個例子,可以看出Foo2類的類型是<type 'type'>,這個其實不破例,Foo2繼續了object類,(這個,照樣跳過吧,後面曾經講過type和object相愛相殺的關系了)
總結
起首,你曉得了類實際上是可以或許創立出類實例的對象。好吧,現實上,類自己也是實例,固然,它們是元類的實例。Python中的一切都是對象,它們要末是類的實例,要末是元類的實例,除type。type現實上是它本身的元類,在純Python情況中這可不是你可以或許做到的,這是經由過程在完成層面耍一些小手腕做到的。其次,元類是很龐雜的。關於異常簡略的類,你能夠不願望經由過程應用元類來對類做修正。你可以經由過程其他兩種技巧來修正類:

1、Monkey patching
2、class decora

以上就是本文的具體內容,願望對年夜家的進修有所贊助。

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