Python學習之旅(十八)
阿新 • • 發佈:2018-11-29
expand red function encode tabs reduce repl nbsp 試圖
Python基礎知識(17):面向對象編程(Ⅱ)
獲取對象信息
在不知道對象信息的情況下,我們想要去獲取對象信息,可以使用以下方法
1、type
(1)判斷對象類型
>>> type(123) <class ‘int‘> >>> type("name") <class ‘str‘> >>> type(None) <class ‘NoneType‘> >>> type(abs) <class ‘builtin_function_or_method‘> >>> importPerson >>> type(Person) <class ‘module‘>
(2)比較兩個對象是否是同一個類型
>>> type(123)==type(456) True >>> type(123)==int True
2、isinstance
(1)判斷一個對象是否是該類型本身或位於該類型的父類繼承鏈
#play.py
class Animals(object): def play(): pass class Dog(Animals): def play():pass class Kity(Dog): def play(): pass a=Animals() d=Dog() k=Kity()
>>> import play >>> isinstance(k,Kity) True >>> isinstance(k,Dog) True >>> isinstance(k,Animals) True >>> isinstance(k,object) True >>> isinstance(d,Kity) False
(2)判斷一個變量是否是某些類型中的其中一種
>>> isinstance(123,(str,int))
True
3、dir
獲得一個對象的所有屬性和方法
>>> dir("Alice") [‘__add__‘, ‘__class__‘, ‘__contains__‘, ‘__delattr__‘, ‘__dir__‘, ‘__doc__‘, ‘__eq__‘, ‘__format__‘, ‘__ge__‘, ‘__getattribute__‘, ‘__getitem__‘, ‘__getnewargs__‘, ‘__gt__‘, ‘__hash__‘, ‘__init__‘, ‘__iter__‘, ‘__le__‘, ‘__len__‘, ‘__lt__‘, ‘__mod__‘, ‘__mul__‘, ‘__ne__‘, ‘__new__‘, ‘__reduce__‘, ‘__reduce_ex__‘, ‘__repr__‘, ‘__rmod__‘, ‘__rmul__‘, ‘__setattr__‘, ‘__sizeof__‘, ‘__str__‘, ‘__subclasshook__‘, ‘capitalize‘, ‘casefold‘, ‘center‘, ‘count‘, ‘encode‘, ‘endswith‘, ‘expandtabs‘, ‘find‘, ‘format‘, ‘format_map‘, ‘index‘, ‘isalnum‘, ‘isalpha‘, ‘isdecimal‘, ‘isdigit‘, ‘isidentifier‘, ‘islower‘, ‘isnumeric‘, ‘isprintable‘, ‘isspace‘, ‘istitle‘, ‘isupper‘, ‘join‘, ‘ljust‘, ‘lower‘, ‘lstrip‘, ‘maketrans‘, ‘partition‘, ‘replace‘, ‘rfind‘, ‘rindex‘, ‘rjust‘, ‘rpartition‘, ‘rsplit‘, ‘rstrip‘, ‘split‘, ‘splitlines‘, ‘startswith‘, ‘strip‘, ‘swapcase‘, ‘title‘, ‘translate‘, ‘upper‘, ‘zfill‘]
測試對象屬性
hasattr:有沒有該屬性
setattr:設置該屬性
getattr:獲取該屬性
>>> class Cal(object): x=2 def cal(): self.y=1 return x+y >>> ca=Cal() >>> hasattr(ca,"x") True >>> setattr(ca,"z",3) >>> getattr(ca,"z") 3 >>> getattr(ca,"p")
如果試圖獲取某個不存在的屬性會報錯
可以傳入一個default參數,如果想獲取的屬性不存在,就返回默認值
>>> getattr(ca,"p") Traceback (most recent call last): File "<pyshell#57>", line 1, in <module> getattr(ca,"p") AttributeError: ‘Cal‘ object has no attribute ‘p‘ >>> getattr(ca,"p",404) 404
實例屬性和類屬性
1、實例屬性屬於各個實例所有,互不幹擾
通過實例變量給實例綁定屬性
2、類屬性屬於類所有,所有實例都可以使用
3、當實例屬性和類屬性名字相同時,類屬性將會被屏蔽
Python學習之旅(十八)