類物件支援兩種操作:屬性引用和例項化。
屬性引用使用和 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...