Python定義類與建立物件

2021-09-25 22:06:54 字數 2780 閱讀 6642

目錄

1. 定義類

2. 建立與使用物件(物件也稱為例項)

1)增加或刪除例項變數

2)增加例項方法

物件導向程式設計的三大特徵:封裝、繼承、多型;

語法格式:

# 語法格式:

class 類名:

執行語句...

類變數...

方法...

類名:乙個或者多個單詞連線而成,每個單詞首字母大寫,其餘字母全部小寫,單詞與單詞之間不使用分隔符;

類包含的類變數可以動態增加或刪除,程式在類定義中為新變數賦值就是增加類變數,程式可以在任何地方為已有的類增加變數,也可以通過del語句刪除已有類的類變數;

物件的變數也可以動態增加或刪除,只要對物件的新變數賦值就是增加變數,可通過del語句刪除已有物件的變數;

定義方法與定義函式相同,但類中的方法第乙個引數要定義為self,用於自動指向呼叫該方法的物件;

特殊的方法:__init__,這個方法叫做構造方法,用於構造該類的物件,python通過呼叫構造方法生成物件;如果開發者沒有定義構造方法,python會自動為該類定義乙個只包含self引數的預設的構造方法;

語法格式:

物件變數 = 類名()

# 本質是呼叫類裡面的構造方法建立物件

物件訪問方法或者變數的語法格式: 物件.變數|方法(引數)

class dog:

def __init__(self, ***="公", classification="二哈"):

# 為dog物件定義了兩個例項變數,self表示呼叫該函式的物件,self.變數就是例項變數

self.*** = ***

self.classification = classification

# 建立物件的本質是根據建構函式建立物件,所以引數值要與建構函式的引數相匹配

# 如果不傳入引數,因為有預設引數值,物件將按照預設引數值建立

# 如果沒有預設引數值,並且建立物件不傳入引數值,程式將出現錯誤

my_dog_1 = dog()

print(my_dog_1.***, my_dog_1.classification)

# 公 二哈

my_dog_2 = dog("母", "鬥牛犬")

print(my_dog_2.***, my_dog_2.classification)

# 母 鬥牛犬

增加例項變數:為新變數賦值即可;

刪除例項變數:del語句;

my_dog_2.name = "林林"

print(my_dog_2.name)

# 林林

del my_dog_2.***

print(my_dog_2.***)

# 程式錯誤:attributeerror: 'dog' object has no attribute '***'

!!!為物件動態增加的方法,python不會自動將第乙個引數self指向呼叫的物件;

# 先定義乙個函式

def feed_food(self, type):

if type=="breakfast":

print("1號型別**")

elif type=="lunch":

print("2號型別**")

else:

print("3號型別**")

# 使用函式feed_food對物件my_dog_2的方法food賦值

my_dog_2.food = feed_food

# 手動指定self引數為呼叫者

my_dog_2.food(my_dog_2, "lunch")

# 2號型別**

使用methodtype可以將動態增加的方法設定為自動將第乙個引數指向呼叫者:可以看到呼叫該方法時不需要指定第乙個引數為呼叫者了;

from types import methodtype

my_dog_2.food = methodtype(feed_food, my_dog_2)

my_dog_2.food("lunch")

# 2號型別**

當python物件的乙個方法呼叫其他方法時,不可以省略self;

class dog:

def __init__(self, ***="公", classification="二哈"):

# 為dog物件定義了三個例項變數

self.*** = ***

self.classification = classification

self.health = 1

def is_dog_healthy(self):

if self.health == 1:

return true

else:

return false

def feed_food(self, type):

# 該方法呼叫其他方法self不能省略

if self.is_dog_healthy()==false:

print("狗狗得病了需要吃好的")

elif type == "breakfast":

print("1號型別**")

elif type == "lunch" :

print("2號型別**")

else:

print("3號型別**")

(python物件導向基礎)定義類和建立物件

定義乙個類,格式如下 class 類名 方法列表 demo 定義乙個car類 定義類 class car 方法 defgetcarinfo self print 車輪子個數 d,顏色 s self.wheelnum,self.color defmove self print 車正在移動.說明 上面定...

java中類的定義與物件的建立

1.類的定義 修飾符 class 類名 public text1 int id,string name,string public void printname public static void main string args 上述 中,定義了乙個名叫text1的類,該類中有兩個構造方法。所謂...

類與物件的定義

舉個例子,在現實生活中 人 是乙個類,狗 也是乙個類,而 張三 是個人,所以是 人 類的物件。而 旺財 是乙隻狗,所以是 狗 類的物件 1.訪問修飾符如public private等是可以選的 2.class是宣告類的關鍵字 3.按照命名規範,類名首字母大寫 訪問修飾符 class 類名 舉例 pu...