1. 程式人生 > >4.0如何判斷物件是否存在某個私有屬性

4.0如何判斷物件是否存在某個私有屬性

一般利用Python的內建函式hasattr(object, name)來判斷物件object的屬性(用name表示)是否存在。如果屬性存在,則返回True,否則返回False。如果屬性是私有的,則需要特別注意,使用Python直接訪問私有屬性方式:例項化物件名._類名__私有屬性名來判斷。
#-*- coding: UTF-8 -*-
class TestClass(object):
    def __init__(self):
        self.X = 10
        self._Y = 10
        self.__Z = 10
    
    def GetX(self):
        if hasattr(self, "X"):
            print "X: True"
    
    def GetY(self):
        if hasattr(self, "_Y"):
            print "_y: True"
    
    def GetZ(self):
        if hasattr(self, "__Z"):  #私有變數,通過物件無法訪問,返回False,實際屬性存在
            print "__Z: False"
        elif hasattr(self, "_TestClass__Z"):
            print "__Z: True"

if __name__ == '__main__':
    print "start main"
    test = TestClass()
    test.GetX()
    test.GetY()
    test.GetZ()


相關推薦

4.0如何判斷物件是否存在某個私有屬性

一般利用Python的內建函式hasattr(object, name)來判斷物件object的屬性(用name表示)是否存在。如果屬性存在,則返回True,否則返回False。如果屬性是私有的,則需要

垃圾回收之判斷物件需要被回收(根搜尋演算法和引用搜索演算法)

根搜尋演算法(JAVA的虛擬機器用的是這個) 可以參考這個 http://blog.csdn.net/qq_15022971/article/details/79162126 引用搜索演算法:是常被初學JAVA者誤解,java的垃圾回收在判斷一個物件是否為可以被回收的物件時,常被誤以為

java中從一個物件陣列中刪除元素和判斷物件陣列了幾個元素的方法

//從陣列中刪除元素方法 private int arrayTotal=0; Pet[] pets=new Pet[10]; pets[1]=dog; pets[2]=cat; pets[3]=pig

ASP.NET 4.0配置文件中的ClientIDMode屬性

ont .cn 微軟 tex left 現在 判斷 mode name ASP.NET 4.0配置文件中的ClientIDMode屬性 來自森大科技官方博客 http://www.cnsendblog.com/index.php/?p=99 時光流逝,我們心愛的ASP.N

python3面向物件(3)私有屬性和方法以及訪問私有屬性和方法的方式

python3中的私有屬性和方法是以__兩個下劃線開頭的: class Woman(object): #定義一個woman類 def __init__(self,name): self.name = name #公有屬性 self

php在物件之外訪問其私有屬性private及保護屬性protected的特例

程式碼如下,在這種情況下php允許訪問私有及保護屬性: class yunke { protected $a = 55; private $b = 66; public fu

安裝部署CloudStack 4 0企業私有云平臺

參考資料CloudStack Installation_Guide/installation.htmlCloudStack Admin_guide/working-with-iso.htmlCloudStack Admin_guide/creating-vms.htmlCloudStack Ad

Android 藍芽BLE 4.0 屬性判斷

 * Characteristic proprty: Characteristic is broadcastable. * 可以廣播,二進位制0001 */publicstaticfinalint PROPERTY_BROADCAST = 0x01;  /** * Characteristic proper

jquery判斷物件某個屬性是否存在

假定obj是一個jq物件,要判斷它的sub屬性是否存在,以下三種方法: 百度到前兩種,有人建議使用第二種,專案中親測第三種工作正常,寫法最簡潔 attr("sub")=="undefined" t

es6 學習筆記 -- 常量,標籤模板,Number物件 判斷物件,陣列 字元 是否存在某個屬性,元素,字元 for of set物件 map物件

定義常量 const T = '我是一個常量,常量是一旦定義不能修改的'; console.log(T)//我是一個常量,常量是一旦定義不能修改的 標籤模板 ``   let divId = 'div'; let divText = 'div 文字' let

判斷兩個物件是否相同,判斷物件陣列中是否含有某個物件

var json1 = { addroleData: [{ key:1, label:'一' },{

無法初始化連結伺服器 "(null)" 的 OLE DB 訪問介面 "Microsoft.Jet.OLEDB.4.0" 的資料來源物件

SQL Server 與 Excel之間導資料時候執行SQL遇到問題 執行如下SQL語句 select * from openrowset('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;HDR=Yes;IMEX=1;Database=d:\sy

C#4.0中的元組物件Tuple

一、什麼是元組 元組就是一些物件的集合,在我們程式設計時,比如一個人的資訊,我們常常建立一個Person類去描述一個人,傳統的做法如下: public class Person{   public int ID{get;set;}   public string Name

JavaScript中判斷物件是否屬於Array型別的4種方法及其背後的原理與侷限性

## 前言 毫無疑問,Array.isArray是現如今JavaScript中判斷物件是否屬於Array型別的首選,但是我認為了解本文其餘的方法及其背後的原理與侷限性也是很有必要的,因為在JavaScript中的大多數引用型別並沒有像Array型別一樣提供一個isArray的判斷方法,此時使用其餘的方法舉一

處理程序“ExtensionlessUrlHandler-Integrated-4.0”在其模塊列表中有一個錯誤模塊“ManagedPipelineHandler”

images 打開 ext framework ros windows log asp gii IIS上部署MVC網站,打開後ExtensionlessUrlHandler-Integrated-4.0解決方法 IIS上部署MVC網站,打開後500錯誤:處理程序&ldqu

resin 4.0 項目的配置

webapps jdbc 行數 localhost 主機名稱 多個 web-inf 監聽 clas 前一篇我們了解了resin中配置數據源,依照不同項目的要求我們進行數據源的配置,如多個項目共享多個數據源,一個項目配置多個數據源,以下我們來看看項目的部署方式: 1、在一

Centos7.3部署Elasticsearch5.4.0集群

elasticsearch centos7 一、 安裝JDK1.1下載安裝cd /usr/local/srctar -zxvf jdk-8u131-linux-x64.tar.gzmv jdk1.8.0_131 /usr/local/java 1.2修改配置文件vim /etc/profile

【轉】Android 4.0 Launcher2源碼分析——啟動過程分析

handler flag 這一 第一次啟動 asynctask pla size ontouch wait Android的應用程序的入口定義在AndroidManifest.xml文件中可以找出:[html] <manifest xmlns:android="htt

視圖框架:Spring MVC 4.0(2)

源碼 resolv pub 發出 variables 不同 圖解 rect js xml 在 《springMVC4(7)模型視圖方法源碼綜合分析》 一文中,我們介紹了ModelAndView的用法,它會在控制層方法調用完畢後作為返回值返回,裏面封裝好了我們的業務邏輯數據和

銀行業步入數字化4.0時代

前沿 news nod 金融安全 表現 管理層 獨立 推薦 增加 銀行業步入數字化4.0時代 2017-05-19 06:22:00 上海金融報   麥肯錫近日指出,在經歷了電子銀行、網絡銀行、移動銀行後,銀行業已經全面步入4.0時代,即數字化時代