1. 程式人生 > >__new__ 例項化子類

__new__ 例項化子類

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

    def __new__(cls, *args, **kwargs):
        return super(Foo, cls).__new__(Bar)

    def func1(self):
        print "111111111111111111111"*10

    def func2(self):
        print "222222222222222222222"*10
        self.func3();

class Bar(Foo):
    def __init__(self, *args, **kwargs):
        import pdb; pdb.set_trace();
        print args
        print kwargs

    def __new__(cls, *args, **kwargs):
        import pdb; pdb.set_trace();
        super(Bar, cls).__new__(*args, **kwargs)

    def func3(self):
        print "333333333333333333333"

    def func4(self):
        self.func1();
        print "444444444444444444444"


if __name__ == '__main__':
    import pdb; pdb.set_trace();
    f = Foo()
    f.func2()
    f.func3()
    f.func4()


相關推薦

__new__ 例項

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

Java為什麼在例項的物件時,會先呼叫父的構造器

1、為什麼在例項化子類的物件時,會先呼叫父類的構造器? 答:子類繼承父類後,獲取到父類的屬性和方法,這些屬性和方法在使用前必須先初始化,所以須先呼叫父類的構造器進行初始化 2、在哪裡呼叫父類的構造器? 答:在子類構造器的第一行會隱式的呼叫 super();,即呼叫父

java為什麼要通過父例項的物件

JAVA 通過父類物件new 子類物件,這個物件的宣告的型別就是父類的型別,呼叫這個物件的方法也只能是父型別的方法,子類獨有的方法是不能夠被使用的。例如 List alist =new ArrayList<>();//只能用lsit中的方法 A

例項是否會例項?不會

java中物件,與類在記憶體方面的理解,使得物件與類的概念具體點   首先關於類,我們可以把它當成一個瓶子模具,這裡的模具只是用它的概念,不需要帶入真正的模具(因為瓶子沒有模具),當我們在 java中使用new來新建一個物件bottle時,可以想象成用這個模

[短文速讀-3] 實例會實例

抽象類 system 來看 開始 pub user end cdn 開發 前言 這是本系列的第三篇文章:本篇文章討論一個很簡單的問題:實例化子類是否會實例化父類。 本篇篇幅不長,適合碎片化時間閱讀。文章會從字節碼和dump內存結構來解答這個問題。 出場角色 小A:剛踏入Ja

例項php的時候如何傳參

<div id="article_content" class="article_content clearfix csdn-tracking-statistics" data-pid="blog" data-mod="popu_307" data-dsm="post">  &

使用mybatis-generator新增自定義外掛時提示無法例項外掛 Cannot instantiate object of type

報錯資訊: Execution default-cli of goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.6:generate failed: Cannot instantiate object

禁止在堆中例項【1】

    設計一個禁止在堆中例項化的類,需要過載operator new和operator delete,並將其設為private。當然,也不是沒有破解的方法,那就是placement new。 // 禁止在堆中例項化物件? // 在堆中例項化物件,需要使用new和dele

使用mybatis-generator新增自定義分頁外掛時提示無法例項外掛

import org.mybatis.generator.api.CommentGenerator; import org.mybatis.generator.api.IntrospectedTable; import org.mybatis.generator.api.PluginAdapter; impo

Unity在一個父物體下例項物體

    public GameObject  hj5;     public GameObject  hj10;     private GameObject GetHand;     private GameObject szhj5;    private GameObj

例項一個的物件時的執行順序

下面這個小程式,你能把結果做對嗎? 我就做錯了,對例項化物件時的執行順序有些生疏了,希望以後杜絕類似的疏忽。 --Book.java: import java.io.IOException; public class Book {   Book(int marker) {

不能例項抽象“錯誤的解決辦法

這篇文章講解一個程式設計中遇到一個錯誤,那就是提示”不能例項化抽象類的錯誤“,在輸出視窗有如下的錯誤提示資訊,如下圖:根據具體情況不同,可能涉及到的類也可能不同,但是道理是一樣的,之所以出現這樣的錯誤呢,其實是因為,你繼承的類的抽象方法沒有在繼承類中進行重寫,比如在這裡,我

java根據輸入值例項列舉enum-switch

java5引入了列舉類這一新特性,最近開發用到了,主要是用來解決將大量判斷if-else語句轉換為switch-case語句,這樣程式從執行效率和可讀性都會得到很大提升。 關於列舉類,網上的資料都沒怎麼提到,如何根據一個動態的輸入值,來得到該列舉類的例項,這裡參考了一篇文章

java中父宣告例項

問題: 1、比如兩個類父類:Person 子類 Student extends Person在使用時候,這樣寫:Person person=null; //宣告物件person=new Student(); //建立物件這樣看來 宣告的時候,是父類,而在產生物件的時候,實際的物件是子類。怎麼理解

物件例項過程

2018年11月05日 08:58:03 aprildusk 閱讀數:3 個人分類: java

Java中的建構函式例項過程

其實我們發現子類繼承父類操作很簡單,如果要是去深入的研究下會發現,例項化過程並非是我們看到的那樣,我們就以程式碼舉例來說明; 問大家,以下程式碼執行會輸出什麼呢? package com.oop; /** * 定義動物物件 * @author

宣告例項以及過載,重寫的一些問題

最近面試碰到一道父類子類的面試題: public class SuperClass { public int a; public SuperClass(){ a=1; System.out.println("a is"+a); }

JAVA final 、super 關鍵字以及繼承關係中父例項變數初始的 理解

1,final 修飾符修飾變數、方法、類 時有什麼作用? ①final 修飾變數:該變數被賦初值後,不能對它重新賦值 ②final 修飾方法:此方法不能重寫,即父類中某方法被final修飾,在子類中將不能定義一個與父類final 方法同名且有相同方法識別符號(引數個數也相同

有父例項時,與父的成員變數,建構函式,程式碼塊的執行順序

package test; public class SuperC { static int i=10; SuperC(){ print(); } void print(){ System.out.println(i); } }package test; public class

java面向物件——繼承最終章--例項過程(記憶體)

一個物件的例項化過程:Person p=new Person(); 1.jvm會讀取指定的路徑下的Person.class檔案,並載入進記憶體。    並會先載入Person中的父類(如果有父類物件的情況下)。 2.在堆記憶體中開闢空間,分配地址 3.並在物件空間中,對物件