1. 程式人生 > 程式設計 >python中property和setter裝飾器用法

python中property和setter裝飾器用法

作用:呼叫方法改為呼叫物件, 比如 : p.set_name() 改為 p.set_name

區別:前者改變get方法,後者改變set方法

效果圖:

程式碼:

class Person:
  def __init__(self,name):
    self._name = name

  def get_name(self):
    return self._name

  def set_name(self,name):
    self._name = name

p = Person('小黑')
print(p.get_name())
p.set_name('小灰')
print(p.get_name())
class Person:
  def __init__(self,name):
    self._name = name

  # 利用property裝飾器將獲取name方法轉換為獲取物件的屬性
  @property
  def get_name(self):
    return self._name

  # 利用property裝飾器將設定name方法轉換為獲取物件的屬性
  @get_name.setter
  def set_name(self,name):
    self._name = name


p = Person('小黑')
print(p.get_name)  # 原 p.get_name(),現 p.get_name
p.set_name = '小灰' # 原 p.set_name('小灰'),現 p.set_name = '小灰'
print(p.get_name)

標準寫法:

效果圖:

程式碼:

# property裝飾器
# 作用: 將一個get方法轉換為物件的屬性。 就是 呼叫方法改為呼叫物件
# 使用條件: 必須和屬性名一樣

# setter方法的裝飾器:
# 作用:將一個set方法轉換為物件的屬性。 就是 a呼叫方法改為呼叫物件
# 使用方法:@屬性名.setter

class Person:
  def __init__(self,name):
    self._name = name

  # 利用property裝飾器將獲取name方法轉換為獲取物件的屬性
  @property
  def name(self):
    return self._name

  # 利用property裝飾器將設定name方法轉換為獲取物件的屬性
  @name.setter
  def name(self,name):
    self._name = name


p = Person('小黑')
print(p.name)  # 原獲取 p.name(),現 p.name
p.name = '小灰' # 原設定 p.name('小灰'),現 p.name = '小灰'
print(p.name)

以上這篇python中property和setter裝飾器用法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。