__init__的問題?????????
class Circle:
PI = 3.14
def __init__(self, r=1):
self.radius = r
def getArea(self):
return self.PI * self.radius * self.radius
C1 = Circle()
print("半徑為", C1.radius, "的圓面積為", C1.getArea()) #利用變數存取類別中的變數
C2 = Circle(10)
print("半徑為", C2.radius, "的圓面積為", C2.getArea())
想請問各位就是,__init__的作用是甚麼(這個是必要的寫法嗎?)
然後就是可以解釋一下C1.radius在運作過程嗎?
然後有沒有可能就是可以把.radius的寫法改成像函式的寫法?
(想說這是python的問題來這邊問問)
(這是網路上的例子)
回答列表
-
2020/07/19 下午 06:56張維元 (WeiYuan)贊同數:0不贊同數:0留言數:1
這個稱為建構式(constructor),用來初始化物件。 如果這個回答對你有幫助請主動點選「有幫助」或「最佳解答」的按鈕,也可以追蹤我的GITHUB帳號。若還有問題的話,也歡迎再開一個新的問題繼續發問(留言在原本的討論底下我可能不會回覆)或者把你理解的部分整理上來,我都會提供你 Review 和 Feedback 😃😃😃
-
2020/07/21 上午 01:25劉冠宏贊同數:0不贊同數:0留言數:0
柏勳您好
這裡的__init__()是在python類別中定義的特別的方法(method),這個方法是在物件建立的時候會做初始化執行的,其稱作建構子(constructor)。
其實在python中,所有的類別都是繼承“object"類,而在你舉的例子中的__init__其實是覆寫(override)了父類別的__init__。
當然你不一定要定義覆寫__init__,你的舉裡也可以改寫為
#注意這裡我們沒有定義__init__
class Circle(object):
PI = 3.14
def getArea(self, r):
return self.PI * r * r
C1 = Circle()
print("圓面積為", C1.getArea(1))
因為我們沒有初始化定義radius,因此在執行getArea時需多輸入一個變數叫r(代表radius)
但習慣上,在自定義類別的時候,會有一些類別的初始化參數需要定義,這時候就會將其定義在__init__中。 希望有回答到你的疑惑 :)