物件導向 屬性 裝飾器函式 property

2022-08-22 09:54:10 字數 3889 閱讀 4171

# 屬性的初識
屬性: 裝飾器函式,內建函式,幫助你將類種的方法偽裝成屬性,特性。**上沒有什麼提公升,只是更合理.

@property 呼叫方法的時候不需要主動加括號,讓程式的邏輯性更合理.

@屬性名.setter 裝飾器,修改被property裝飾的屬性的時候會呼叫被這個裝飾器裝飾的方法,除了self之外還有乙個引數,被修改的值

@屬性名.deleter 裝飾器,當要刪除被property裝飾的屬性的時候會呼叫這個被這個裝飾器裝飾的方法

class

person:

def__init__

(self,name,hight,weight):

self.name =name

self.

__hight =hight

self.

__weight =weight

@property

defbmi(self):

return

'%s 的bmi 值%s

' %(self.name,self.__weight / self.__hight ** 2)

p1 = person('

大陽哥',1.68,70)

#print(p1.bmi())

print

(p1.bmi)

#屬性 : 將乙個方法 偽裝成乙個 屬性,在**的級別上沒有本質的提公升,但是讓其看起來跟合理.

print

(p1.name)

p1.name = '

alex

'print(p1.name)

# 屬性的改

class

person:

def__init__

(self,name,age):

self.name =name

if type(age) is

int:

self.

__age =age

else

:

print( '

你輸入的年齡的型別有誤,請輸入數字')

@property

defage(self):

return self.__age

@age.setter

defage(self,a1):

'''判斷,你修改的年齡必須是數字

'''if type(a1) is

int:

self.

__age =a1

else

:

print('

你輸入的年齡的型別有誤,請輸入數字')

@age.deleter

defage(self):

del self.__age

p1 = person('

帥哥',20)

print

(p1.age)

print(p1.__dict__

)p1.age = 23

print

(p1.age)

delp1.age

print(p1.__dict__)

20

23

# property : 類似於bmi這種,area,周長....  ***

# @age.setter **

# @age.deleter *

待整理:

# property 裝飾器函式,內建函式,幫助你將類中的方法偽裝成屬性,特性

# 呼叫方法的時候不需要主動加括號

# 讓程式的邏輯性更合理

# @方法名.setter 裝飾器,修改被property裝飾的屬性的時候會呼叫被這個裝飾器裝飾的方法,除了self之外還有乙個引數,被修改的值

# @方法名.deleter 裝飾器,當要刪除被property裝飾的屬性的時候會呼叫被這個裝飾器裝飾的方法

# 只用property

# class circle:

# def __init__(self,r):

# self.r = r

# # self.area = 3.14*self.r**2

#

# @property

# def area(self): # 這個方法計算結果本身就是是乙個屬性,但是這個屬性會隨著這個類/物件的一些基礎變數的變化而變化

# return 3.14*self.r**2

# c = circle(5)

# print(c.area)

# c.r = 10

# print(c.area)

# 偏其他語言 property+私有的 合用 ,這個時候更多的也會用到setter和deleter

# class a:

# def __init__(self,name):

# self.__name = name

#

# @property

# def name(self):

# return self.__name

#

# @name.setter

# def name(self,new_name):

# if type(new_name) is str:

# self.__name = new_name

#

# @name.deleter

# def name(self):

# del self.__name

# a = a('alex')

# a.name = 123

# print(a.name)

# del a.name # 語法

# print(a.name)

物件導向之類裝飾器

property是一種特殊的屬性,訪問它時會執行一段功能 函式 然後返回值 class student def init self,name,birth self.name name self.birth birth property 將乙個方法偽裝成屬性 defage self import ti...

物件導向之裝飾器

可以通過 property的getter和setter方法修改物件的屬性值。class person object def init self,name,age self.name name self.age age 訪問器 getter方法 property def name self retur...

python裝飾器和python物件導向練習題

編寫裝飾器,為函式加上統計時間的功能 2.編寫裝飾器,為函式加上認證的功能 3.定義乙個名為vehicles 交通工具 的基類 該類中應包含str型別的成員屬性brand 商標 和 color 顏色 還應包含物件方法run 行駛在控制台顯示 我已經開動了 和show info 顯示資訊 在控制台顯示...