python 獲取物件 python中獲取物件資訊

2021-10-16 16:09:49 字數 1611 閱讀 1436

拿到乙個變數,除了用 isinstance()判斷它是否是某種型別的例項外,還有沒有別的方法獲取到更多的資訊呢?

例如,已有定義:

class person(object):

def __init__(self, name, gender):

self.name = name

self.gender = gender

class student(person):

def __init__(self, name, gender, score):

super(student, self).__init__(name, gender)

self.score = score

def whoami(self):

return 'i am a student, my name is %s' % self.name

首先可以用 type()函式獲取變數的型別,它返回乙個 type物件:

>>> type(123)

>>> s = student('bob', 'male', 88)

>>> type(s)

其次,可以用 dir()函式獲取變數的所有屬性:

>>> dir(123) # 整數也有很多屬性...

['__abs__', '__add__', '__and__', '__class__', '__cmp__', ...]

>>> dir(s)

['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'gender', 'name', 'score', 'whoami']

對於例項變數,dir()返回所有例項屬性,包括`__class__`這類有特殊意義的屬性。注意到方法`whoami`也是 s的乙個屬性。

如何去掉`__***__`這類的特殊屬性,只保留我們自己定義的屬性?回顧一下filter()函式的用法。

dir()返回的屬性是字串列表,如果已知乙個屬性名稱,要獲取或者設定物件的屬性,就需要用 getattr()和setattr( )函式了:

>>> getattr(s, 'name') # 獲取name屬性

'bob'

>>> setattr(s, 'name', 'adam') # 設定新的name屬性

>>> s.name

'adam'

>>> getattr(s, 'age') # 獲取age屬性,但是屬性不存在,報錯:

traceback (most recent call last):

file "", line 1, in

attributeerror: 'student' object has no attribute 'age'

>>> getattr(s, 'age', 20) # 獲取age屬性,如果屬性不存在,就返回預設值20:

用python 來獲取當前電腦及python的資訊

coding utf 8 執行當前指令碼來獲取當前電腦及python的配置資訊。import sys,platform 先看python。a sys.version info print 當前python版本號是.format a a ret 當前作業系統 plat form platform.pl...

python 獲取物件資訊

判斷物件型別,使用type 函式 判斷乙個物件是否是函式 使用types模組中定義的常量 import types type abs types.builtinfunctiontype true type lambda x x types.lambdatype true type x for x i...

python中獲取物件資訊

拿到乙個變數,除了用isinstance 判斷它是否是某種型別的例項外,還有沒有別的方法獲取到更多的資訊呢?例如,已有定義 class person object def init self,name,gender self.name name self.gender gender class st...