1. 程式人生 > >python關於初始化和例項化之----log日誌列印兩次的問題綜述

python關於初始化和例項化之----log日誌列印兩次的問題綜述

我在寫appium-desktop自動化框架的時候,我發現在我執行demo的時候,日誌會執行兩次,我查了一堆資料也沒有發現我錯在哪裡。 

    一。開始我以為是  __init__的問題,我檢查了__init__方法,發現他們屬於同一物件,沒有多餘的物件。

    二。然後我就檢查我自定義的方法,也沒有發現問題。

    三。然後在我即將放棄的時候,發現了一個漏洞,就是我建立日誌例項的時候,沒有修改名稱(都是複製貼上惹的禍)

logger = Logger(logger='CyTest').getlog()
就是這個 logger='***'


***就是你當前class類的名稱,也可以是檔名稱,因為我沒有修改,
所以我在另一個檔案使用的時候,同時會再次呼叫這個logger物件,造成了列印了兩次,
如果你用了三次,不好意思,可能會列印三遍(我是列印了三遍之後才發現我這個問題的,基礎還是薄弱啊!)


日誌例項化的問題,請以後不要隨便複製貼上程式碼,容易出錯。

相關推薦

python關於初始例項----log日誌列印的問題綜述

我在寫appium-desktop自動化框架的時候,我發現在我執行demo的時候,日誌會執行兩次,我查了一堆資料也沒有發現我錯在哪裡。      一。開始我以為是  __init__的問題,我檢查了__init__方法,發現他們屬於同一物件,沒有多餘的物件。    二。然後我

Spring Bean的初始例項的區別

準確的說,標題中的初始化指的是Bean Definition的初始化,所以是完全不同的兩個概念。   普通的Java類如果想被SpringIOC容器託管,擁有強大的擴充套件功能和更強大的生命週期,使用者(程式設計師)要做的只是寫配置或者寫註解,然後Spring會做這些事:

Java類初始例項

摘要: Java有以下幾種方式建立類物件: 利用new關鍵字 利用反射Class.newInstance 利用Constructor.newIntance(相比Class.newInstance多了有參和私有建構函式) 利用Cloneable/Object.clone() 利

Java基礎學習系列-Java類初始例項

Java有以下幾種方式建立類物件: 利用new關鍵字 利用反射Class.newInstance 利用Constructor.newIntance(相比Class.newInstance多了有參和私有建構函式) 利用Cloneable/Object.clon

初始例項初始過程

類初始化過程①,一個類要建立例項需要先載入並初始化該類--》main方法所在的類需要先載入和初始化②,一個子類要初始化需要先初始化父類③,一個類初始化就是執行<clinit>() 方法--》<clinit>() 由靜態類變數賦值程式碼和靜態程式碼塊組成--》靜態類變數賦值程式碼和靜態程

靜態初始例項初始

父類單獨的效果: 當父類單獨執行時,靜態初始化塊優先執行,然後是例項初始化塊,最後才是構造器; 子類單獨效果 首先執行父類的靜態初始化塊和子類的初始化塊(優先執行靜態)然後執行父類的例項初始化

java類載入例項:靜態程式碼塊、初始程式碼塊、構造方法的執行順序

java中第一次例項化一個物件時,靜態程式碼塊、初始化塊、屬性的初始化、構造方法,再加上如果父類也有這些東西,天,到底執行順序是什麼? 來一段程式碼試一試就知道了: public class LoadingTest { public static void main(

Python的類方法、靜態方法例項方法

#-*- coding:utf-8 -*- class A: def __init__(self,name): self.name=name @staticmethod def staticfun(): p

03_javaSE面試題:類初始例項初始

題目 下面程式碼執行的結果是什麼? Father 類 /** * @author kevin * @date 2019/7/8 15:48 */ public class Father { private int i = test(); private static int j = m

第4章 初始結束過程

  每一個程式碼塊都具有一個BEGIN和一個END,儘管在BASM中用ASM關鍵字代替了BEGIN,但它仍然起著相同的作用。  有些情況下,BEGIN和END只決定一個語法結構的開始和結束,例如記錄和物件型別定義中使用的BEGIN和END。但更多的時候(例如例程定義中),BEGIN與END代表初始化與結束化過

java 初始例項的區別

class A{   public A(){     ……//初始化 }  public static void main(String&nb

Flask高階應用01--環境搭建例項藍圖

一、Flask簡介 Flask是一個基於Python實現的web開發的’微’框架,Flask和Django一樣,也是一個基於MVC設計模式的Web框架 [中文文件地址]http://docs.jinkan.org/docs/flask/ http://www.pythondoc.co

class檔案的載入、初始例項

class檔案的載入包含以下過程:載入(load class檔案)-校驗-準備-解析-初始化-例項化,上述過程是大致過程,具體過程可以參考:jvm class檔案載入過程。 看下面的程式碼樣例: package staticclass; public class StaticC

深入理解Java物件的建立過程:類的初始例項

摘要:   在Java中,一個物件在可以被使用之前必須要被正確地初始化,這一點是Java規範規定的。在例項化一個物件時,JVM首先會檢查相關型別是否已經載入並初始化,如果沒有,則JVM立即進行載入並呼叫類構造器完成類的初始化。在類初始化過程中或初始化完畢後,根據具體情況才會

C#中類的建立例項

     C#中,例項化就是建立物件的過程,使用關鍵字new來建立。      在看C#視訊中遇到這麼一個例子,就是更改物件的密碼。我們就通過這個例子來理解一下類的建立和例項化。      1、首先要

C++函式模板的具體化例項

C++函式模板----模板例項化、具體化 函式模板是C++新增的一種性質,它允許只定義一次函式的實現,即可使用不同型別的引數來呼叫該函式。這樣可以減小程式碼的書寫複雜度,同時也便於修改。 mark:使用函式模板並不會減少最終可執行程式的大小,因為在呼叫模板函式時,編譯器都根據呼叫時的引數型別進行形影的例項化

js中 建構函式,原型,例項物件

1,建構函式建立物件造成的記憶體浪費,和原型的引入 function Person(name,age){ this.name = name; this.age = age; this.introduce = function

C#基礎 繼承例項

有程式碼如下,問輸出的是多少: class Program { static void Main(string[] args) { B b = new B(); Console.ReadKey(); } class A

[轉]Spring依賴注入例項(new)的差別

Spring依賴注入和例項化(new)的差別。 Sping為什麼使用依賴注入而不使用例項化物件的方式? 首先說明一下概念 依賴注入(Dependency of Injection)和控制反轉(Inversion of Control 簡稱

python 根據類名例項物件

方法一: class obj(object):        pass   a = eval('obj()') 方法二: 如果是經常需要這樣可以 #將用來建立物件的字串預編譯成code物件. create_obj = compile('obj()',