python類總結

<!DOCTYPE html>


python類總結




css

python 類的總結




  1. 私有屬性
    html


    class Dog():

    def init(self):

    self.heart=100

    d=Dog()

    d.heart #訪問不到,heart屬於私有

    在變量前加
    兩個下劃線,變量變爲私有屬性,外部不能訪問,內部能夠訪問

    def getheart():
    return self.
    heart#提供對外的私有屬性的訪問方法

    對私有屬性的強制訪問

    d.Dog
    heart
    python




  2. 公有屬性(全部類共同擁有的屬性)
    class Dog()
    type='京巴' #建立公有屬性
    d=Dog()
    d2=Dog()
    Dog.type #這樣調用,是在全部類的對象的公有變量裏設置
    d.type#d,d2屬性相同
    d2.type#當用對象調用的時候,會在本身對象的內存裏新建一個type變量

  3. 析構函數
    d=Dog() del d#刪除對象名到內存空間的引用
  4. 繼承
  5. 靜態方法
    名義上歸類管理,實際上在靜態方法裏訪問不了類或實例中的任何屬性
    author = 'Mr.Bool'
    class Dog(object):
    def init(self,name):
    self.name=name
    @staticmethod
    def eat():
    print("%s like eat 骨頭"%self.name)
    print('狗愛吃骨頭')
    @staticmethod
    def eat(self):
    print("%s like eat 骨頭"%self.name)
    # print('狗愛吃骨頭')
    def talk(self):
    self.eat(self)
    print('汪汪') git

    d=Dog("汪汪")
    d.talk() github

  6. 類方法 @classmethod 類方法只能訪問類變量。不能訪問實例變量。幾乎不多用
  7. 屬性方法 @property
    把一個方法變成一個靜態屬性,不用括號調用。 class Dog(): def init(self): pass @property def eat(self): print('狗愛吃骨頭') @property def eat(self,name): print('狗愛吃%s'%self.name) @eat.setter def eat(self,foot): print('set to foot:%s'%foot) d=Dog() d.eat 調用屬性方法 d.eat='包子' 當屬性方法須要傳參數,就要重寫一個方法,方法名與屬性方法名相同 d.Eat='包子' 大寫也能夠 當刪除屬性方法時用 @eat.delete def eat(self): del self.__food print('刪完了')
  8. 類的描述信息
    class Dog(): '''這個類是描述狗的''' print(Dog.doc)輸出 這個類是描述狗的
  9. moduleclass module輸出 這個類是從哪一個模塊裏 class輸出類
  10. call 對象後面加括號執行call d=Dog() d() 將調用Dog裏的call方法
  11. dict查看對象中的全部成員變量和方法,使用實例調用只打印實例內的屬性,不包括類屬性
  12. str web

    在類裏寫
    def str(self): return "<obj:%s>"%self.name d直接打印對象就輸出str裏的內容 canvas

  13. getitem,setitem,delitem,把類變成字典
    class Foo(object): def init(self): self.data={} pass def getitem(self,key): print('getitem',key) return self.data.get(key) pass def setitem(self,key,value): print('setitem',key) self.data[key]=value pass def delitem(self,key): print('delitem',key) pass obj=Foo() obj['name']='alex'#自動觸發執行 getitem print(obj['name'] #自動觸發執行 setitem del obj['k1'] #自動觸發執行delitem
  14. new metaclass 類也是對象,type爲類的類
    class Dog(): pass type(Dog) 會知道類的類爲type new方法在init構造函數方法前執行 new裏面調用init
    def new(cls,args,*kwargs): print('Foo --new--') return object.new(cls) 當return被註釋時,init不會被調用,這句繼承父類的new方法 metaclass原類 ruby

    class MyType(): def init(self): print("mytype init") 1 pass def call(self): print("mytype call") 2 class Dog(): metaclass=MyType def init(self): print("dog init") 4 pass def new(self): print("dog new") 3
    call建立new new建立init markdown

  15. 反射
    getattr setattr hasattr delattr class Foo(object):app

    def __init__(self):
    self.name = 'wj'
    def func(self):
    return 'func'

    obj = Foo()

    檢查是否含有成員 #### hasattr(obj, 'name') hasattr(obj, 'func')

    獲取成員 #### getattr(obj, 'name') getattr(obj, 'func')

    設置成員 #### setattr(obj, 'age', 18) setattr(obj, 'show', lambda num: num + 1)

    刪除成員 #### delattr(obj, 'name') delattr(obj, 'func')

相關文章
相關標籤/搜索