Python - python type and type related functions

In this post, we have the following section, we are going to examine the type system and focus on the following aspect, 1. where I can get type of a class or type of an object.  And we will also examine the function that works on the type in python, the function that we will examine include 1. isinstance, issubclass and of course the most known one - type function. 
Let's see the code below. 
'''
Created on 2012-11-21

@author: Administrator
'''

def type_basic():
    type_equal = type("hello") == type("Goodbye")
    type_equal = type(5)

def type_get_type():    
    class A:
        pass
    class B(A):
        pass
    b = B()
    type_info = type(b)
    type_info = b.__class__
    assert type_info == B, "b.__class__ != B"
    assert type_info == type(b), "b.__class__ == type(b)"

def type_isinstance():    
    class C:
        pass
    class D:
        pass
    class E(D):
        pass
    x = 12
    c = C()
    d = D()
    e = E()
    is_instance = isinstance(x, E) # false
    is_instance = isinstance(c, E) # false
    is_instance = isinstance(e, E) # true 
    is_instance = isinstance(e, D) # true
    is_instance = isinstance(d, E) # false

def type_issubclass():
    class C:
        pass
    class D:
        pass
    class E(D):
        pass
    issubclass(C, D)
    issubclass(E, D)
    issubclass(D, D)
    e = E()
    # remmber the type_get_type method? you can do the 
    # issubclass on the x.__class__
    issubclass(e.__class__, D)

if __name__ == '__main__':
    type_basic()
    type_get_type()
    type_isinstance()
    type_issubclass()

更多相關文章
  • python對多國語言的處理是支持的很好的,它可以處理現在任意編碼的字符,這裏深入的研究一下python對多種不同語言的處理.有一點需要清楚的是,當python要做編碼轉換的時候,會借助于內部的編碼,轉換過程是這樣的:原有編碼 -> 內部編碼 -> 目的編碼python的內部是使用uni ...
  • ---------<PYTHON核心編程>比較 Python(Python 與其他語言的比較)Python 已經和很多語言比較過了.一個原因就是 Python 提供了很多其他語言擁有的特性.另外一個原因就是 Python 本身也是由諸多其他語言發展而來的,這包括 ABC.Modula-3 ...
  • In this post , we will investigate the techqniues that we can explore to way that we can improve testability and debugability .assertthe simplest way ...
  • 安裝deb軟件包時出現Unknown media type in type **/** 的解決辦法
        在安裝astah uml時出現了如下問題:        該問題的解決方法如下:    1.找到kde.xml文件,我這裏的路徑是:   /usr/share/mime/packages/kde.xml    2.先對kde.xml文件進行備份:        sudo cp /usr/sh ...
  • Python has in-built a database engine that is the sqlite3 which does not require a server and a client, unlike mysql and others. sqlite3 uses a file a ...
  • We know some small techniques that we can use to build small programs. but we eventually will progress to build a more complicated program, and we nee ...
  • Normally we will use __init__ as the constructor, but what shall we do when we are done with the object?the key lies in the __del__ method, when the o ...
  • type(object) type(name, bases, dict) 本函數是返回對象的類型對象.只有一個參數object時,直接返回對象的類型對象.如果只是想判斷一個對象是否屬于某一個類的對象,可以使用isinstance()函數,並不需要本函數返回類型對象來判斷,因爲在有繼承關系時,它並不返 ...
一周排行
  • Xcode有四種build for 分別是: build for Running build for Testing build for Profiling build for Archiving Running最常 ...
  • http://www.cnblogs.com/netfocus/ http://www.cnblogs.com/daxnet/
  •      一直只知道Struts中bean write屬性只是原樣輸出,但是沒有發現它有另外一個用途,那就是.當在action中,存放的值是帶有HTML標簽的時候,bean標簽有一個filter屬性,默認是爲true ...
  • IntelliJ IDEA 使用JSTL標簽庫(IDEA 載入 tld文件)
    這兩天在 IntelliJ IDEA 中 使用 C標簽(JSTL)的時候發現引入進來有問題 ...
  • Struts2之ValueStack    上一節在將闡述ModelDriven的機制時,常常提到一個名詞ValueStack.也許你會毫不猶豫脫口而出,不就是值棧嗎?對,就是它,那你知道Struts爲什麽需要引入它 ...
  • 火雲開發課堂 - 使用Cocos2d-x 開發3D遊戲系列 第十七節:地表的實現
    <使用Cocos2d-x 開發3D遊戲>系列線上課程            第 ...
  • 使用CPPLint規範代碼,不用不知道,一用嚇一跳,一共一千行的代碼,一百來個地方要出錯. 總結了一下,有如下幾個問題 先套用一句從別的博文上看到的一句話:花6周的時間形成一個習慣,哪怕是一個壞習慣.(實在想不起來在 ...
  • 昨天我用MySQL來實現了ORACLE的遞歸語句CONNECT BY, 看起來稍複雜些.今天來看看POSTGRESQL如何實現ORACLE的CONNECT BY.還是用昨天同樣的表以及數據.POSTGRESQL自诩最 ...
  • 本節重點在于讓大家熟悉各種SQL注入在JAVA當中的表現,本想帶點ORM框架實例,但是與其幾乎無意,最近在學習MongoDb,挺有意思的,後面有機會給大家補充相關.0x00 JDBC和ORMJDBC:JDBC(Jav ...
  • 在第1章,我們說過Scala允許你創建新的"感覺像是原生語言支持"的控制抽象.盡管到目前你已經看到的例子都的確是控制抽象,不過任何人都不會 誤以爲它們是原生語言支持的.爲了搞明白如何讓控制抽象感覺 ...