❶ python 如何根據一個對象的屬性值查詢該對象其他某個屬性值
在 Chrom 類中新增一個類函數,遍歷存儲列表並返回匹配的對象
大概寫了個樣例
❷ python類的屬性有哪幾種如何訪問它們
屬性的訪問機制
一般情況下,屬性訪問的默認行為是從對象的字典中獲取,並當獲取不到時會沿著一定的查找鏈進行查找。例如a.x的查找鏈就是,從a.__dict__['x'],然後是type(a).__dict__['x'],再通過type(a)的基類開始查找。
若查找鏈都獲取不到屬性,則拋出AttributeError異常。
一、__getattr__方法
這個方法是當對象的屬性不存在是調用。如果通過正常的機制能找到對象屬性的話,不會調用__getattr__方法。
classA:
a=1
def__getattr__(self,item):
print('__getattr__call')
returnitem
t=A()
print(t.a)
print(t.b)
#output
1
__getattr__call
b
二、__getattribute__方法
這個方法會被無條件調用。不管屬性存不存在。如果類中還定義了__getattr__,則不會調用__getattr__()方法,除非在__getattribute__方法中顯示調用__getattr__()或者拋出了AttributeError。
classA:
a=1
def__getattribute__(self,item):
print('__getattribute__call')
raiseAttributeError
def__getattr__(self,item):
print('__getattr__call')
returnitem
t=A()
print(t.a)
print(t.b)
所以一般情況下,為了保留__getattr__的作用,__getattribute__()方法中一般返回父類的同名方法:
def__getattribute__(self,item):
returnobject.__getattribute__(self,item)
使用基類的方法來獲取屬性能避免在方法中出現無限遞歸的情況。
三、__get__方法
這個方法比較簡單說明,它與前面的關系不大。
如果一個類中定義了__get__(),__set__()或__delete__()中的任何方法。則這個類的對象稱為描述符。
classDescri(object):
def__get__(self,obj,type=None):
print("callget")
def__set__(self,obj,value):
print("callset")
classA(object):
x=Descri()
a=A()
a.__dict__['x']=1#不會調用__get__
a.x#調用__get__
如果查找的屬性是在描述符對象中,則這個描述符會覆蓋上文說的屬性訪問機制,體現在查找鏈的不同,而這個行文也會因為調用的不同而稍有不一樣:
其他情況見文末參考資料的文檔
四、__getitem__方法
如果僅僅想要對象能夠通過[]獲取對象屬性可以簡單的:
總結
當這幾個方法同時出現可能就會擾亂你了。我在網上看到一份示例還不錯,稍微改了下:
❸ 怎麼判斷 Python 對象是否包含某個屬性
頂級函數hasattr可以查看對象是否包含某某屬性,這里的屬性包括數據屬性和方法。getattr可以獲取屬性。
如下舉例說明。
a=[1,2,3]
print('列表有count屬性:%s'%hasattr(a,'count'))
print('列表有append屬性:%s'%hasattr(a,'append'))
print('列表有shift屬性:%s'%hasattr(a,'shift'))
print('列表的count屬性是方法:%s'%hasattr(getattr(a,'count'),'__call__'))
print('列表的append屬性是方法:%s'%hasattr(getattr(a,'append'),'__call__'))
classmyclass():
def__init__(self):
self.valattr=3
defmethod(self):
pass
mc=myclass()
print('myclass有valattr屬性:%s'%hasattr(mc,'valattr'))
print('myclass有method屬性:%s'%hasattr(mc,'method'))
print('myclass的valattr屬性是方法:%s'%hasattr(getattr(mc,'valattr'),'__call__'))
print('myclass的method屬性是方法:%s'%hasattr(getattr(mc,'method'),'__call__'))
❹ python 怎樣看類中有沒有某個屬性
使用dir() 函數即可
❺ python如何獲取windows文件屬性的詳細信息
#已知文件名的情況下,可以用這個函數
def getFileInfo(filepath):
info = {}
if os.path.isfile(filepath):
info['TimeCreated'] = os.path.getctime(filepath)
info['TimeModified'] = os.path.getatime(filepath)
info['Size'] = os.path.getsize(filepath)
return info
❻ python查看對象有哪些
看你的問題不知道你想知道查看python對象的內容方法還是查看一個對象有哪些屬性,兩個答案都給你。
查看python對象的內容方法:
如下代碼:
a = [1,2,3]
print(type(a))
print(a)
執行結果是:
<class 'list'>
[1, 2, 3]
也就是說通過print(type(對象名))可以輸出對象類型,print(對象名)可以輸出對象的詳細信息。
查看一個對象有哪些屬性
使用dir命令,如
text="string"
dir(text)
❼ python如何查看一個對象有哪些屬性
使用dir命令,如
text="string"
dir(text)
❽ python怎麼查看行列的屬性
import numpy
a = numpy.array([[1,2,3],[4,5,6]])
print a.shape
矩陣有一個shape屬性,是一個(行,列)形式的元組!
❾ python 如何查看object有哪些屬性值
dir([obj]):
調用這個方法將返回包含obj大多數屬性名的列表(會有一些特殊的屬性不包含在內)。obj的默認值是當前的模塊對象。
hasattr(obj, attr):
這個方法用於檢查obj是否有一個名為attr的值的屬性,返回一個布爾值。
getattr(obj, attr):
調用這個方法將返回obj中名為attr值的屬性的值,例如如果attr為』bar』,則返回obj.bar。
setattr(obj, attr, val):
調用這個方法將給obj的名為attr的值的屬性賦值為val。例如如果attr為』bar』,則相當於obj.bar = val。
❿ python.屬性查找順序
1 import numbers 2 class IntField: # 當一個類實現了 __get__, __set__, __delete__ 3 """ 4 數據描述符 5 """ 6 def __get__(self, instance, owner): 7 return self.value 8 def __set__(self, instance, value): 9 if not isinstance(value, numbers.Integral):10 raise ValueError("int value need")11 if value < 0:12 raise ValueError("positive value need")13 self.value = value14 def __delete__(self, instance):15 pass16 17 class NonDataIntField:18 """19 非數據屬性描述符20 """21 def __get__(self, instance, owner):22 return self.value23 24 class User:25 age = IntField()26 27 if __name__ == "__main__":28 u = User()29 u.age