小白汪 python的物件導向學習

2021-08-19 22:21:39 字數 3484 閱讀 4067

類物件支援兩種操作:屬性引用和例項化。

屬性引用使用和 python 中所有的屬性引用一樣的標準語法:obj.name

類物件建立後,類命名空間中所有的命名都是有效屬性名。

類的方法與普通的函式只有乙個特別的區別——它們必須有乙個額外的第乙個引數名稱, 按照慣例它的名稱是 self。

class test:

def prt(self):

print(self)

print(self.__class__)

t = test()

t.prt()

cheshi1是python的檔名,self 代表的是類的例項,代表當前物件的位址,而 self.class 則指向類。

self 不是 python 關鍵字,我們把他換成 其他的名稱 也是可以正常執行的:

class test:

def prt(num):

print(num)

print(num.__class__)

t = test()

t.prt()

執行結果是一樣的

在類地內部,使用 def 關鍵字來定義乙個方法,與一般函式定義不同,類方法必須包含引數 self, 且為第乙個引數,self 代表的是類的例項。

#!/usr/bin/python3

# 類定義

class people:

# 定義基本屬性

name = ''

age = 0

# 定義私有屬性,私有屬性在類外部無法直接進行訪問

__weight = 0

# 定義構造方法

def __init__(self, n, a, w):

self.name = n

self.age = a

self.__weight = w

def speak(self):

print("%s 說: 我 %d 歲。" % (self.name, self.age))

# 例項化類

p = people('csdn', 10, 30)

p.speak()

執行結果:
csdn 說: 我 10 歲。
物件導向很重要的乙個特點是繼承,接下來看一下python的繼承:

繼承分為單繼承和多繼承

注意圓括號中基類的順序,若是基類中有相同的方法名,而在子類使用時未指定,python從左至右搜尋 即方法在子類中未找到時,從左到右查詢基類中是否包含方法。

#!/usr/bin/python3

# 類定義

class people:

# 定義基本屬性

name = ''

age = 0

# 定義私有屬性,私有屬性在類外部無法直接進行訪問

__weight = 0

# 定義構造方法

def __init__(self, n, a, w):

self.name = n

self.age = a

self.__weight = w

def speak(self):

print("%s 說: 我 %d 歲。" % (self.name, self.age))

# 單繼承示例

class student(people):

grade = ''

def __init__(self, n, a, w, g):

# 呼叫父類的構函

people.__init__(self, n, a, w)

self.grade = g

# 覆寫父類的方法

def speak(self):

print("%s 說: 我 %d 歲了,我在讀 %d 年級" % (self.name, self.age, self.grade))

# 另乙個類,多重繼承之前的準備

class speaker():

topic = ''

name = ''

def __init__(self, n, t):

self.name = n

self.topic = t

def speak(self):

print("我叫 %s,我是乙個演說家,我演講的主題是 %s" % (self.name, self.topic))

# 多重繼承

class sample(speaker, student):

a = ''

def __init__(self, n, a, w, g, t):

student.__init__(self, n, a, w, g)

speaker.__init__(self, n, t)

test = sample("tim", 25, 80, 4, "python")

test.speak() # 方法名同,預設呼叫的是在括號中排前地父類的方法

我叫 tim,我是乙個演說家,我演講的主題是 python
和其他物件導向的語言一樣,如果你的父類方法的功能不能滿足你的需求,你可以在子類重寫你父類的方法

類屬性與方法

類的私有屬性

__private_attrs:兩個下劃線開頭,宣告該屬性為私有,不能在類地外部被使用或直接訪問。在類內部的方法中使用時 self.__private_attrs。

類的方法

在類地內部,使用 def 關鍵字來定義乙個方法,與一般函式定義不同,類方法必須包含引數 self,且為第乙個引數,self 代表的是類的例項。

self 的名字並不是規定死的,也可以使用 this,但是最好還是按照約定是用 self。

類的私有方法

__private_method:兩個下劃線開頭,宣告該方法為私有方法,只能在類的內部呼叫 ,不能在類地外部呼叫。self.__private_methods。

python同樣支援運算子過載,我們可以對類的專有方法進行過載,例項如下:

#!/usr/bin/python3

class vector:

def __init__(self, a, b):

self.a = a

self.b = b

def __str__(self):

return 'vector (%d, %d)' % (self.a, self.b)

def __add__(self, other):

return vector(self.a + other.a, self.b + other.b)

v1 = vector(2, 10)

v2 = vector(5, -2)

print(v1 + v2)

vector (7, 8)

大部分叢菜鳥教程學習整理:

python小白 物件導向 成員介紹

方法property等 字段分為兩種 普通字段和靜態字段 普通字段,又叫例項屬性,在物件導向中屬於物件,在物件被建立時產生。也就是說,普通字段只能通過物件來訪問,不可通過類訪問 如下 class ziduan 普通字段 例項屬性 def init self 通過物件建立普通字段 self.commo...

小白學Python(一)

小白學python 一 一 注釋 單行注釋 多行注釋 注 在python2中為了支援中文必須寫中文注釋在第一行 coding utf 8 二 定義變數 語法 變數名 變數值 例 a 10 在第一次為變數賦值為定義變數,第一次之後就為修改變數 變數的型別 1 數字 int 整型 long 長整型 fl...

小白必備物件導向練習

68 python 中如何定義乙個自己的 class python 使用關鍵字 class 定製自己的類,self 表示類例項物件本身。乙個自定義類內包括屬性 方法,其中有些方法是自帶的。類 物件 class dog object pass以上定義乙個 dog 物件,它繼承於根類 object,pa...