python建立person類 建立和使用類

2021-10-18 14:58:20 字數 3603 閱讀 3083

## python類和物件

python是一種物件導向的程式語言。python中的幾乎所有東西都是具有其屬性和方法的物件。類就像物件的建構函式,或者是建立物件的「藍圖」。

## 建立類

要建立乙個類,請使用關鍵字`class`。

示例,建立乙個名為myclass的類,並帶有乙個名為x的屬性:

class myclass:

x = 5

## 建立物件

現在我們可以使用名為myclass的類來建立物件。

示例,建立乙個名為p1的物件,並列印x的值:

p1 = myclass()

print(p1.x)

## \_\_init \_\_()函式

上面的示例是類和物件的最簡單形式,在實際應用中並沒有真正的用處。要了解類的含義,我們必須了解內建的\_\_init \_\_()函式。所有類都有乙個名為\_\_init \_\_()的函式,該函式始終在啟動類時執行。使用\_\_init \_\_()函式為物件屬性或建立物件時必須執行的其他操作分配值。

示例,建立乙個名為person的類,使用\_\_init \_\_()函式為名稱和年齡分配值:

class person:

def __init__(self, name, age):

self.name = name

self.age = age

p1 = person("john", 36)

print(p1.name)

print(p1.age)

注意:每次使用該類建立新物件時,都會自動呼叫該`__init__()`函式。

## 物件方法

物件也可以包含方法。物件中的方法是屬於該物件的函式。

示例,讓我們在person類中建立乙個方法,插入乙個列印問候語的函式,並在p1物件上執行它:

class person:

def __init__(self, name, age):

self.name = name

self.age = age

def myfunc(self):

print("hello my name is " + self.name)

p1 = person("john", 36)

p1.myfunc()

注:該`self`引數是對類的當前例項的引用,並用於屬於類訪問的變數。

## self引數

該`self`引數是對該類當前例項的引用,用於訪問屬於該類的變數。它不必命名`self`,可以隨意命名,但必須是該類中任何函式的第乙個引數。

示例,使用單詞*mysillyobject*和*abc*代替*self*:

class person:

def __init__(mysillyobject, name, age):

mysillyobject.name = name

mysillyobject.age = age

def myfunc(abc):

print("hello my name is " + abc.name)

p1 = person("john", 36)

p1.myfunc()

## 修改物件屬性

您可以像這樣修改物件的屬性,示例,將p1的年齡設定為40:

p1.age = 40

## 刪除物件屬性

您可以使用`del`關鍵字刪除物件的屬性,示例,從p1物件中刪除age屬性:

del p1.age

## 刪除物件

您可以使用`del`關鍵字刪除物件,示例,刪除p1物件:

del p1

## pass 語句

`class`定義不能為空,但是如果由於某種原因而有乙個`class`不包含任何內容的定義,請放入`pass`語句中,以避免出錯。

class person:

pass

## 建立和使用類

使用類幾乎可以模擬任何東西。比如編寫乙個表示小狗的簡單類dog,它表示的不是特定的小狗,而是任何小狗。對於大多數寵物狗,它們都有名字和年齡,另外大多數小狗還會蹲下和打滾。

由於大多數小狗都具備上述兩項資訊(名字和年齡)和兩種行為(蹲下和打滾),我們的dog類將包含它們。這個類讓python知道如何建立表示小狗的物件。編寫這個類後,我們將使用它來建立表示特定小狗的例項。

## 建立 dog 類

根據dog類建立的每個例項都將儲存名字和年齡。我們賦予了每條小狗蹲下(sit())和打滾(roll\_over())的能力:

class dog():

def __init__(self, name, age):

"""初始化屬性name和age"""

self.name = name

self.age = age

def sit(self):

"""模擬小狗被命令時蹲下"""

print(self.name.title() + " is now sitting.")

def roll_over(self):

"""模擬小狗被命令時打滾"""

print(self.name.title() + " rolled over!")

在class 處,我們定義了乙個名為dog的類。根據約定,在python中,首字母大寫的名稱指的是類。這個類定義中的括號是空的,因為我們要從空白建立這個類。然後我們編寫了乙個文件字串,對這個類的功能作了描述。

類中的函式稱為方法;你前面學到的有關函式的一切都適用於方法,就目前而言,唯一重要的差別是呼叫方法的方式。方法\_\_init\_\_()是乙個特殊的方法,每當你根據dog類建立新例項時, python都會自動執行它。在這個方法的名稱中,開頭和末尾各有兩個下劃線,這是一種約定,旨在避免python預設方法與普通方法發生名稱衝突。

我們將方法\_\_init\_\_()定義成了包含三個形參: self、 name和age。在這個方法的定義中,形參self必不可少,還必須位於其他形參的前面。為何必須在方法定義中包含形參self呢?因為python呼叫這個\_\_init\_\_()方法來建立dog例項時,將自動傳入實參self。每個與類相關聯的方法呼叫都自動傳遞實參self,它是乙個指向例項本身的引用,讓例項能夠訪問類中的屬性和方法。

我們建立dog例項時, python將呼叫dog類的方法\_\_init\_\_()。我們將通過實參向dog()傳遞名字和年齡; self會自動傳遞,因此我們不需要傳遞它。每當我們根據dog類建立例項時,都只需給最後兩個形參( name和age)提供值。

之後定義的兩個變數都有字首self。以self為字首的變數都可供類中的所有方法使用,我們還可以通過類的任何例項來訪問這些變數。 ( = name獲取儲存在形參name中的值,並將其儲存到變數name中,然後該變數被關聯到當前建立的例項。 self.age = age的作用與此類似。像這樣可通過例項訪問的變數稱為屬性。

dog類還定義了另外兩個方法: sit()和roll\_over()。由於這些方法不需要額外的資訊,如名字或年齡,因此它們只有乙個形參self。我們後面將建立的例項能夠訪問這些方法,換句話說,它們都會蹲下和打滾。當前, sit()和roll\_over()所做的有限,它們只是列印一條訊息,指出小狗正蹲下或打滾。但可以擴充套件這些方法以模擬實際情況:如果這個類包含在乙個計算機遊戲中,這些方法將包含建立小狗蹲下和打滾動畫效果的**。如果這個類是用於控制機器狗的,這些方法將引導機器狗做出蹲下和打滾的動作。

建立乙個類Person的簡單例項

建立乙個類person,包含以下屬性 姓名 name 年齡 age 朋友 friends陣列 問候 sayhi方法,輸出問候語,例如 你好!交朋友 addfwww.cppcns.comriend方法,向friends裡新增乙個值 然程式設計客棧後建立兩個此類的例項 小張 22,小李 小王 你好!ja...

Person類和Teacher類(公有派生)

問題描述 從類person中派生出乙個teacher類,新增的屬性有專業 specialty 職稱 position 和主講課程 majorcourse 一門,並為這些屬性定義相應的方法。person類的設計如下,空白處請補充完整。class person char getname char get...

Person類與Student類的關係

problem c person類與student類的關係time limit 1 sec memory limit 128 mb submit 3714 solved 2798 submit status description當然,乙個student首先是乙個person。所以,student類...