問題舉例
在物件導向程式設計中, 我們把方法看作物件的介面,
直接訪問物件的屬性可能是不安全的,或設計上不夠靈活。
但是使用呼叫方法在形式上不如訪問屬性簡潔。
circle.get_radius()
circle.set_radius(5.0) #繁瑣
circle.radius
circle.radius = 5.0 #簡潔
能否在形式上是屬性訪問,但實際上是內部呼叫方法?
使用property函式為類建立可管理屬性,fget/fset/fdel對應相應屬性訪問。
**
importmath
class
circle:
def__init__
(self, radius):
self.radius =radius
defget_radius(self):
return round(self.radius, 1)
defset_radius(self, radius):
ifnot
isinstance(radius, (int, float)):
raise typeerror('
wronge type')
self.radius =radius
@property
defs(self):
return self.radius ** 2 *math.pi
@s.setter
defs(self, s):
self.radius = math.sqrt(s /math.pi)
r =property(get_radius, set_radius)
c = circle(5.712)
c.s = 99.88
(c.s)
(c.r)
#print(c.get_radius())
#c.radius = '31.98
python類與物件 如何建立可管理的物件屬性
問題舉例 在物件導向程式設計中,我們把方法看作物件的介面,直接訪問物件的屬性可能是不安全的,或設計上不夠靈活。但是使用呼叫方法在形式上不如訪問屬性簡潔。circle.get radius circle.set radius 5.0 繁瑣 circle.radius circle.radius 5.0...
Python定義類與建立物件
目錄 1.定義類 2.建立與使用物件 物件也稱為例項 1 增加或刪除例項變數 2 增加例項方法 物件導向程式設計的三大特徵 封裝 繼承 多型 語法格式 語法格式 class 類名 執行語句.類變數.方法.類名 乙個或者多個單詞連線而成,每個單詞首字母大寫,其餘字母全部小寫,單詞與單詞之間不使用分隔符...
js如何建立可迭代物件
如何設計乙個迭代器 迭代器的本身是乙個物件,這個物件有netx 方法返回結果物件,這個結果物件有下乙個返回值value 迭代器完成布林值done,模擬建立乙個簡單迭代器 每次呼叫迭代器的next 都會返回下乙個物件,直到資料被用盡。es6中迭代器的編寫過程類似,但引入了生成器物件,更簡單的建立迭代器...