理解Python中的類物件、例項物件、屬性、方法

skysparrow發表於2018-05-08
class Animal(object):  # 類物件

    age = 0  # 公有類屬性
    __like = None  # 私有類屬性

    def __init__(self):  # 魔法方法
        self.name = `haha`  # 公有例項屬性
        self.__sex = `man`  # 私有例項屬性

    def smile(self):  # 公有方法  self指向例項物件
        pass

    def __jump(self):  # 私有方法
        pass

    @classmethod
    def run(cls):  # 類方法  cls 指向類物件
        pass

    @staticmethod
    def msg():  # 靜態方法,可以沒有引數
        pass

```
# 類物件: 
將具有相似屬性和方法的物件總結抽象為類物件,可以定義相似的一些屬性和方法,不同的例項物件去引用類物件的屬性和方法,能減少程式碼的重複率。

# 類屬性: 
類物件所有的屬性,類物件和例項物件均可以訪問,被它們共同擁有; 

# 公有類屬性: 
可以在類外修改類屬性,需要通過類物件引用直接修改; 
類內可以通過類方法修改類屬性。 
如果通過例項物件來引用類屬性,相當於例項物件在例項方法中建立了一個和類屬性相同的名字,等同於區域性變數例項屬性,和類屬性無關; 

# 私有類屬性: 
類外通過類物件引用不能直接更改,只能通過例項方法呼叫類物件更改。

# 類方法: 
需要修飾器@classmethod,標示其為類方法,類方法的第一個引數必須為類物件,一般用cls表示,通過cls引用的必須是類屬性和類方法。

# 靜態方法: 
需要修飾器@staticmethod,標示其為靜態方法。需要做一些功能,和類相關,但不需要類和物件參與,此時可以使用靜態方法,靜態方法可以不需要引數。

# 例項物件: 
通過類物件建立的例項物件

# 例項屬性: 
通過方法定義的屬性 

# 私有例項屬性: 
__開頭定義的變數名;只能通過方法呼叫來更改 
公有例項屬性: 
可以通過例項物件重新定義

# 例項方法: 
第一個引數公認為self,可以呼叫類物件和例項物件。

# 私有方法: 
只能在類內呼叫,如果類外呼叫,則需要類內的公有方法呼叫類內的私有方法,在類外呼叫這個公有方法,則間接呼叫了私有方法。 
一個程式中最核心的內容,不能隨意呼叫,可以設定為私有方法,通過公有方法的判斷去呼叫私有方法!

# 公有方法: 
可以在類內類外隨意呼叫。

# 魔法方法: 
例如__init__方法,用兩個__前後包裹的方法
```

  

                                                                   ——-  知識無價,汗水有情,如需搬運請註明出處,謝謝!


相關文章