19 物件導向之語法(4)

2022-05-12 06:18:34 字數 2382 閱讀 7144

即把呼叫get()和set()簡化成對屬性的的獲取和設定

同時也能把set()和get()簡化成「裝飾器+屬性()」,無需定義get_score()和set_score()

class mystudent(object):

@property #對score進行讀操作

def score(self):

return self.__score

@score.setter #對score進行寫操作

def score(self,score):

if not isinstance(score,int):

raise valueerror('score must be a int!\n')

elif (score <0 or score > 100):

raise valueerror('score must be in [0,100]!\n')

else:

self.__score = score

s2 = mystudent()

#print(s2.score,'\n') #同樣的,class本身沒有設定__score,而此處的s1這個instance目前還沒有set這個屬性

#所以,一上來get就會報錯

s2.score = 95

print(s2.score,'\n') #設定了__score之後,當然就能get了。

#s2.score = 195 #範圍超出了[0,100],報錯

#s2.score = '95' #型別不是it,報錯

#定義唯讀屬性:只定義getter方法,不定義setter方法就是乙個唯讀屬性:

class people(object):

@property #允許對__birth的讀操作

def birth(self):

return self.__birth

@birth.setter #允許對__birth的寫操作

def birth(self, birth):

self.__birth = birth

@property #允許對__age的讀操作

def age(self):

return 2018 - self.__birth #當前的年份減去出生年份,即為粗糙的age

#不設定@age.setter以及相應的def age() ... ,等於說age唯讀

p1 = people()

#print(p1.birth,'\n') #p1的__birth還沒設定,不可訪問

p1.birth = 1995

print(p1.birth,'\n')

print(p1.age,'\n') #因為age內部實現的原因,只要有birth和當前年份,就有age,所以直接get

class screen(object):

@property #讀

def width(self):

return self.__width

@width.setter #寫

def width(self,width): #先對width做兩個測試:1)int 2)[1,1366]

if not isinstance(width,int):

raise valueerror('width must be a int!\n')

elif (width <1 or width > 1366):

raise valueerror('width must be in [1,1366]!\n')

self.__width = width

@property

def height(self):

return self.__height

@height.setter

def height(self,height):

self.__height = height

@property #resolution為唯讀的attribution

def resolution(self):

return 786432

sc1 = screen()

sc1.width = 1024

sc1.height = 750

print(sc1.width,sc1.height,'\n')

print(sc1.resolution,'\n')

#sc1.width = '1024' #型別不對

#sc1.width = 100000 #大小不對

#sc1.resolution = 1234567 #resolution是唯讀屬性,不可以寫

18 物件導向之語法(3)

class student object pass s1 student 給s1新增屬性 s1.name haozhang print s1.name,n 給s1新增方法 def setage self,age 此處同時還新增了例項屬性屬性age self.age age from types im...

python學習 19 物件導向

class cat defeat self print 小貓愛吃魚 def drink self print 小貓要喝水 tom cat print tom hello cat print hello class cat defeat self print 小貓愛吃魚 def drink self ...

物件導向4

多型 多型 可以理解為事物存在的多種體現形態。1,多型的體現 父類的引用指向了自己的子類物件。父類的引用也可以接收自己的子類物件。貓狗豬都是動物,但是動物不止這些,當其他動物時,eat的方法利用多型可以提高 復用性 abstract class animal class catextends ani...