python中重要的概念:類(class)


1、名詞解釋

類:類代表了具有相同特征的一類事物(人)

對象、實例:具體的某一個事物或者是人

實例化:將類變成對象的這么一個過程,即新建一個對象的過程,就是對類的一個實例化過程。

 

2、格式

 

函數定義:

def func1():  #這樣定義的叫做函數,它是在模塊中定義的。

  pass

 

類定義:

class Person():

  def func1(self):   在類里定義的函數,叫做方法,而不叫函數,請注意區別。

    pass

  #類變量,也叫屬性定義

  name = "張三"

  age = 30

       #類私有變量定義,前面用雙下划線_定義的變量就是私有變量

  __private_args = "class private"

  #構造函數, 構造函數是在實例化的時候被自動運行的

  def __init__(self, name, age):

    print("構造函數運行")

 

p = person()  #這里就是實例化一個對象,這一過程中,構造函數被執行

print(p.name)

print(p.age)

print(p.__private_args)  #這里會報錯,因為__private_args是類的私有變量,對象不可訪問

3、構造函數

修改上面的類中構造函數如下:

def __init__(self, name, age, sex):

 

    self.sex = sex

  print(self.name)

  print(self.age)

  print(self.sex)

上面的self.name, self.age, self.sex叫實例變量,如果在構造函數里沒有對實例變量定義並賦值,將在類里找對應的同名類變量來作為。所以如果按照上面的構造函數。

在實例化時,p = Person("小紅“,“33”,“女”)

執行結果將打印

張三

33

因為上面的self.name, self.age沒有再構造函數里定義,則使用了同名類變量的默認值。

如果構造函數改成

def __init__(self, name, age, sex):

    self.name = name

  self.age = age

  self.sex = sex

  print(self.name)

  print(self.age)

  print(self.sex)

實例化p = Person("小紅“,“33”,“女”)將打印

小紅

33

上面的構造函數中,你可以理解成對類變量的重新復制,但更應該理解成重新定義的實例化變量。

4、私有方法定義

def __my_private_func(self): #雙下划線開頭

  print("私有方法")

5、保護方法定義

def _my_protect_function(self): #一個下划線開頭

  print("保護方法")

6、類方法定義

@classmethod

def my_calss_method(cls):  #這里在方法上面要放一個裝飾器,方法的參數里寫cls,而不是self.

  print("類方法")

7、靜態方法定義

@staticmethod

def my_static_method():

  print("靜態方法")

8、公共方法定義,也叫普通方法

def get_private_args(self):  #公共方法是類最常見的方法

  return self.__private_args

9、關於self的思考與分析

a、上面的方法中,沒有self參數,行不行?

  self代表的是一個實例,代表的是每一個類實例化的一個對象,名字可以隨便改,但是必須放在第一個位置。比如

def get_private_args(a):  #沒有用self,而是寫了a

  return a.__private_args

實例化驗證下:

p = Person("大山",40,"男")

print(p.get_private_args())

上面也能得知正確的結果

 

10、 靜態方法調用

Person.my_static_method()

也可以通過實例化后的對象調用

p.my_static_method()

靜態方法的低啊用,類不用實例化就可以調用,靜態方法一般是這個方法和這個類太大的直接性關系時用到。一般在寫工具類的時候可能會用到這種方法。

11、類方法的調用

Person.my_class_method()

也可以通過實例化后的對象調用

p.my_class_method()

12、python中,私有方法在外面能訪問嗎?

print(Person.__dict__)

能夠看到這個類里面包含所有的變量和方法名

print(p._Person__private_args)

p._Person__my_private_method()

答案是:可以訪問,只要在私有變量和私有方法前加上_Person(單下划線和類名)

 

 

 

 

 

 

 

 

  

 

 

    

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM