本篇主要是介紹python,內容可先看目錄
其他基礎知識詳解,歡迎查看本人的其他文章
Python基礎知識詳解 從入門到精通(一)介紹
Python基礎知識詳解 從入門到精通(二)基礎
Python基礎知識詳解 從入門到精通(三)語法與函式
Python基礎知識詳解 從入門到精通(四)串列、元組、字典、集合
Python基礎知識詳解 從入門到精通(五)模塊管理
Python基礎知識詳解 從入門到精通(六)檔案操作
PS:很多人在學習Python的程序中,往往因為遇問題解決不了或者沒好的教程從而導致自己放棄,為此我整理啦從基礎的python腳本到web開發、爬蟲、django、資料挖掘等【PDF等】需要的可以進Python全堆疊開發交流.裙 :一久武其而而流一思(數字的諧音)轉換下可以找到了,里面有最新Python教程專案可拿,不懂的問題有老司機解決哦,一起相互監督共同進步
定義類
注意,若類的方法與屬性名一樣,則屬性會覆寫方法
一個類可以產生無數的物件,當物件的方法被呼叫時候,物件會將自身作為第一個引數作為self引數傳給方法,這樣子就可以分辨是哪一個變數在呼叫這個方法,所以定義方法時候第一個引數必定是self
關于self 不理解也沒關系,每一個函式都放在第一個函式即可
__ init __(self) 是魔法方法用于傳引數,使用方法如下
在類實體化開始時會自動被呼叫,可以用于一些開始時候需要做的事
用了__init__可以直接在生成物件時候傳引數
但是注意__init__不能回傳資料,它默認放回None
關于魔法方法后期文章解釋
def aa():
print('dd')
class aa :
“這是類的說明” # 用類名.__doc__ 可以輸出
g = 3
def jj(self):
aa() #可以呼叫全域函式
print(‘jjjjj’)
class bb:
#屬性,,,,,,就是變數的值,,,比如魚是紅色的,多大,這些是屬性
a= 1
b = ‘sssss’ #這是類屬性,所有實體共有的,只要一個實體修改了它,全部實體都改變
#方法 就是類內的函式
def sename(self,name):
self.name = nema #如self.xxxx是實體屬性,每個實體互不影響
def pr(self)
print(self.name)
def hhh(self):
pass
class cc:
def __init__(self,name)
self.name = name
self.pr #可以呼叫下面的函式
def pr(self)
print (self.name)
使用
實體名.__dict__可以查看實體的屬性(字典型別)
類名.__dict__可以查看類的屬性(字典型別)
以上定義中aa為類,a為實體物件
還可以直接使用類物件 如aa.g 這是類物件
為了區分函式與類
約定類大寫開頭,函式小寫開頭
如實體物件
a = aa()
a.jj()
#結果為 jjjjj
a = bb()
a.setname(‘gfx’)
a.pr()
#結果為gfx
#如cc中使用了__init__可以直接在生成物件時候傳引數
a = cc(‘gfx’)
a. pr()
#結果為gfx
#實體物件可以直接加屬性
#如a.hh = 8 相當于加一個hh屬性
#實體物件使用時可以修改屬性的值
#a.g +=3
#則a.g 結果為6
使用類物件
如
a = aa()
b = aa()
c = aa()
#a,b,c是不同的實體物件
#如a.g 結果為3
b.g 結果為3
a.g +=3
#則a.g 結果為6
b.g 結果為3
#但若使用類物件,會直接改變類的屬性
aa.g = 8
#則a.g 結果為8
b.g 結果為8
訪問屬性
如
a.g 可以訪問
也可以
用getattr(實體物件名,‘屬性名’,‘若無此屬性回傳內容’)
但是方法只有實體物件才能呼叫,這個也是python的系結概念
定義了實體物件,再洗掉該類,這個實體物件也是可以用的,
私有定義
由雙下劃線開頭的為私有定義 __ a
不可被外部呼叫,只能內部
如
class dd:
__a = 4
def get(self)
return __a
#使用
g =dd
g.__a #不合法
外部使用私有變數
假如要在外部用a,需要借助方法get
g.get() 即可
實際上python的私有是一種 ‘假私有’(名字重整)
這是改變了變數名字 改為 __類名__變數名
所以g.__dd__a也可以在外部呼叫
繼承操作:
class 類1名(類2名): 繼承操作:類1繼承類2的方法和屬性
不能繼承私有方法和屬性
繼承是有順序的,從左往右,若有同名方法或屬性,先繼承前面的,后面的被屏蔽
如果子類中還定義與父類同名的方法或屬性,則自動覆寫父類的對應的方法或屬性
注意子類中再用__init__可能會覆寫父類中的需要的變數
解決方法有兩個
一. 呼叫未系結的父類方法
如 定義子類時 父類名.__ init __(self)即可
二. 使用super函式
用法在子類中 super().父類中需要的方法名()
如 super().__ init __() 可以自動找父類,以后也不用修改
可以多重繼承,class 類1名(父類1名,父類3名,父類四名……):
如class ff (aa,cc,dd):
組合
即多個物件的組合、
就是把類的實體化放到另一個組合里
如
class a :
def __init__(self,x)
self.num = x
class c :
def __init__(self,y)
self.num = y
class d :
def __init__(self,x,y)
self.a = a(x)
self.c = c(y)
def pr(self)
print(‘a有%d個,c有%d個‘%(self.a.num , self.c.num)
結果為
g = d (3,4)
A有3個,c有4個
相關的BIF(內置函式)
issubclass(class,classinfo)
若第一個引數class 是第二個引數的子類或者本身回傳true 否則回傳false
第二個引數可以是一個元組,里面有各個類,只有其中一個是第一個的父類即符合條件
如issubclass(class,object) 回傳true,,,,object是所有類的一個基類,所有類默認繼承object
isinstance(實體物件名,classinfo)
檢擦實體物件是否屬于第二個引數類,是則回傳true 否則則反之
第二個引數可以是一個元組,里面有各個類,只有其中一個即可
如果第一個引數不是傳入物件,一直回傳false
hasattr(物件名,name)
若物件里面有第二個引數這個屬性,有則true,name是一個字串有‘‘ 或“”
getattr(物件名,name [, default])
回傳物件指定屬性的值,若指定屬性不存在將[, default的值列印出來,若不輸入[, default]則回傳例外
s etattr(物件名,name ,value)
設定物件中指定屬性的值,若屬性不存在則新建一個屬性并賦值
delattr(物件名,name)
洗掉物件的指定屬性,若屬性不存在則例外
Property (fget = None, fset =None ,fdel = None,doc = None)
去設定一個存在的屬性
Fget,是獲取屬性的方法
Fset設定屬性的方法
Fdel洗掉屬性的方法
但是具體方法要自己傳入
使用
class q:
def __init__(self,size=10):
self.size = size
def get(self):
return Self.size
def set(self,value):
self.size = value
def dellll ():
del self.size
x = property (get, set,dellll)
則
設定size
q.x = 78
使用size
q.x
洗掉size
del q.x
說到這里,
很多人在學習Python的程序中,往往因為遇問題解決不了或者沒好的教程從而導致自己放棄,為此我整理啦從基礎的python腳本到web開發、爬蟲、django、資料挖掘等【PDF等】需要的可以進Python全堆疊開發交流.裙 :一久武其而而流一思(數字的諧音)轉換下可以找到了,里面有最新Python教程專案可拿,不懂的問題有老司機解決哦,一起相互監督共同進步
本文的文字及圖片來源于網路加上自己的想法,僅供學習、交流使用,不具有任何商業用途,著作權歸原作者所有,如有問題請及時聯系我們以作處理,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/196578.html
標籤:Python
