1. 程式人生 > >Python學習之旅(十八)

Python學習之旅(十八)

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>
>>> import
Person >>> 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學習之旅(十八)