類和例項(類是抽象的模板,例項是根據類建立出來的物件)
class student(object): #定義類 ()內的元素表示當前定義的類是從**繼承的
def__init__(self,name,score): #
繫結屬性__init__ (相當於其他語言的constructor)
self.name =name
self.score =score
def print_score(self): #
繫結方法
print("
%s:%s
" %(self.name,self.score))
bat = student("
fred
",98) #
建立例項
bat.name = "
vip"
#可自由的給例項變數繫結屬性
bat.print_score() #
vip:98
訪問限制(使用私有作用域,只能在內部訪問。例項的變數名如果以__開頭,就變成了乙個私有變數(private),只有內部可以訪問,外部不能訪問)
classstudent(object):
def__init__
(self,name,score):
self.
__name =name
self.
__score =score
def__print_score
(self):
print("
%s:%s
" % (self.__name,self.__score
))
def get_name(self): #
讀取內部屬性
return self.__name
def set_name(self,newname): #
設定內部屬性
self.__name =newname
classmate = student("
fred
",98)
print(classmate.__name) #
'student' object has no attribute '__name'
繼承和多型
classanimal(object):
defrun(self):
print("
animal is run")
class cat(animal): #
cat繼承animal
defrun(self):
print("
cat is run")
cat =cat()
cat.run()
#cat is run (多型)
isinstance(cat,animal) #
true 判斷cat是否是animal型別
獲取物件資訊
type(123)isinstance(,list)
#優先使用isinstance()
dir('abc') #
['__add__', '__class__',...,'zfill']
classtest(object):
def__init__
(self,name):
self.name =name
defsay_name(self):
(self.name)
test = test("
fred")
hasattr(test,
"name
") #
true
getattr(test,"
say_name
") #
>
例項屬性和類屬性
classstudent(object):
name = "
fred
"s =student()
print(s.name) #
fred 讀取類屬性
s.name = "
vip"
print(s.name) #
vip 讀取例項屬性
python 物件導向程式設計
新式類 class mynewobjecttype bases define mynewobjecttype class class suite經典類 沒有指定乙個父類,或者子類化的基本類沒有父類,就建立了乙個經典類 class mynewobjecttype define mynewobjectt...
Python物件導向程式設計
class mynewobjecttype bases define mynewobjecttype class class suite例項化 myfirstobject mynewobjecttype class mydatawithmethod object defprintfoo self p...
python物件導向程式設計
程式設計正規化 程式設計時程式設計師用特定的語法 資料結構 演算法組成的 在計算機上執行任務的過程。實現乙個任務有不同的方式,對這些不同的程式設計方式的特點進行歸納總結得出的程式設計方式類別,即為程式設計正規化。不同的程式設計正規化本質上代表對各種型別的任務採取的不同的解決問題的思路,兩種最重要的程...