#類的基本知識
#類物件的優點:多型,封裝,繼承
#多型from random import choice
s=['a',"b","c","d"]
ch=choice(s)#從列表中隨機選擇元素,並返回
print(ch)
#例:序列中的count函式為多態函式,不管時字串型別還是列表型別,都可以使用該函式
#很多函式和運算子都是多型的,不需要確定物件的具體型別
#封裝:是指向程式中的其他部分隱藏物件的具體實現細節的原則
#繼承:子類,超類(基類)
#class語句會在函式定義的地方建立自己的命名空間
_metaclass_=type#確定使用新式類,可以通過type(物件)來檢視例項物件所屬的類
class people:
def getname(self):#self引數為物件自身的引用
return self.name
def setname(self,name):
self.name=name
def print(self):
print("hello world! i'm %s."%self.name)
person=people()
person.setname("li")
print(person.getname())
person.print()
person.name='wang'
print(person.getname())
person.print()
#上述self引數:方法將它們的引數判定到所屬的例項上,因此無需顯示提供,方法和普通函式可以互相繫結,如下;
def prints():
print("function prins")
person.print=prints#函式繫結不能加括號
person.print()
func=person.print#通過變數引用類方法,實際上func還是繫結到了物件上,因為該方法訪問了自身
#預設情況下,可以在外部訪問物件的特性,可以通過在方法或特性的名字前面加雙下劃線可以變為私有的
class stu:
def __getid(self):
print("you can't see id!")
def myget(self):
self.__getid(self)
st=stu()
st._stu__getid()#實際上雙下劃線被解釋為單下劃線加加類名加私有方法,即這樣可以訪問
#from module import *:不會匯入前面有下劃線的名字
class stuff:
num=0#在類的作用域定義了乙個可供所用例項訪問的變數
def init(self):
stuff.num+=1
x=stuff()
x.init()
print(x.num)
y=stuff()
y.init()
print(y.num)
#上述x,y操作了同乙個變數,但可以將某個例項的該變數重新繫結到其他值上,而遮蔽類範圍內的變數
#超類:在類定義的類名後的圓括號裡指定多個該類的超類,子類可以擴充套件超類的定義
class others:
def output(x=none):
print("others data!")
class shape:
def init(self):
self.block=
def getdata(self,data):
return [x for x in data if x not in self.block]
class rect(shape,others):#多重繼承,若shape,others有同名方法,則shape的方法可用,而others的該方法被重寫(使其不可訪問)
def init(self):
self.block=['a']
sh=shape()
sh.init()
print(sh.getdata([1,2,3]))
r=rect()
r.init()
r.output()
print(r.getdata(['a','b','c']))
#使用內建函式issubclass(x,y)函式可以檢視乙個類x是不是另乙個類y的子類,返回布林值
print(issubclass(rect,shape))
print(rect.__bases__)#使用__base__或__bases__特性可以檢視類的基類
print(isinstance(r,rect))#使用函式isinstance(x,y)檢查x是否為類y的(間接)例項,返回布林值
print(r.__class__)#使用__class__特性檢查乙個物件屬於哪個類
執行結果:
類的基本知識
格式說明 類public static void main string args 方法 public class demo3 private static void method3 string name 在方法中宣告的引數叫做形參 傳遞的叫做實參 private static void meth...
Python基本知識
這次主要對python基礎語法及資料型別中與我使用過的語言不一樣的地方做下記錄 單行注釋使用 多行注釋使用 和 print 開始 這是個注釋 這是個段落注釋 這也是個段落注釋 print 結束 2.沒有bool型別,用數字0和1代替,可以與數字運算,python3中新增了true和false關鍵字 ...
Python基本知識
單例模式,是一種常用的軟體設計模式。在它的核心結構中只包含乙個被稱為單例的特殊類。通過單例模式可以保證系統中,應用該模式的類乙個類只有乙個例項。即乙個類只有乙個物件例項。實現方法 裝飾器 sub replacement,string count 0 replacement是被替換的文字 string...