'計算兩點間的距離'
class
point
(object):
def__init__
(self, x=
0, y=0)
: self.x, self.y = x, y
defdistance_to
(self, other)
: dx = self.x - other.x
dy = self.y - other.y
return
(dx * dx + dy * dy)
**0.5
def__str__
(self)
:return f'(, )'
p1 = point(3,
5)p2 = point(6,
9)print
(p1, p2)
'(3, 5) (6, 9)'
print
(p1.distance_to(p2)
)
在python中,可以通過給物件屬性名新增字首下劃線的方式來說明屬性的訪問可見性,例如,可以用__name表示乙個私有屬性,_name表示乙個受保護屬性
class
student
:def
__init__
(self, name, age)
: self.__name = name
self.__age = age
defstudy
(self, course_name)
:print
(f'正在學習.'
)stu = student(
'王大錘',20
)stu.study(
'python程式設計'
)print
(stu.__name)
#print這裡會報錯,類外無法直接訪問
class
student
:def
__init__
(self, name, age)
: self.__name = name
self.__age = age
# 屬性訪問器(getter方法) - 獲取__name屬性
@property
defname
(self)
:return self.__name
# 屬性修改器(setter方法) - 修改__name屬性
@name.setter
defname
(self, name)
:# 如果name引數不為空就賦值給物件的__name屬性
# 否則將__name屬性賦值為'無名氏',有兩種寫法
# self.__name = name if name else '無名氏'
self.__name = name or
'無名氏'
@property
defage
(self)
:return self.__age
stu = student(
'王大錘',20
)print
(stu.name, stu.age)
# 王大錘 20
stu.name =
''print
(stu.name)
# 無名氏
# stu.age = 30 # attributeerror: can't set attribute
在實際專案開發中,我們並不經常使用私有屬性,屬性裝飾器的使用也比較少,所以上面的知識點大家簡單了解一下就可以了。
靈活、簡便,python太方便了。。。
class
student
:def
__init__
(self, name, age)
: self.name = name
self.age = age
stu = student(
'王大錘',20
)# 為student物件動態新增***屬性
stu.*** =
'男'
可以在類中指定__slots__ = (『name』, 『age』),這樣student類的物件只能有name和age屬性
class
student
: __slots__ =
('name'
,'age'
)def
__init__
(self, name, age)
: self.name = name
self.age = age
stu = student(
'王大錘',20
)# attributeerror: 'student' object has no attribute '***'
stu.*** =
'男'
這時使用物件方法在邏輯上就有點不對勁了。。。因為構造了三角形的物件,就說明三條邊符合要求了。
類方法和靜態方法的區別:類方法的第乙個引數是類物件本身,而靜態方法則沒有這個引數。
class
********
(object):
"""三角形類"""
def__init__
(self, a, b, c)
:"""初始化方法"""
self.a = a
self.b = b
self.c = c
@staticmethod
defis_valid
(a, b, c)
:"""判斷三條邊長能否構成三角形(靜態方法)"""
return a + b > c and b + c > a and a + c > b
# @classmethod
# def is_valid(cls, a, b, c):
# """判斷三條邊長能否構成三角形(類方法)"""
# return a + b > c and b + c > a and a + c > b
class
person
:"""人類"""
def__init__
(self, name, age)
: self.name = name
self.age = age
defeat(self)
:print
(f'正在吃飯.'
)def
sleep
(self)
:print
(f'正在睡覺.'
)class
student
(person)
:"""學生類"""
def__init__
(self, name, age)
:# super(student, self).__init__(name, age)
super()
.__init__(name, age)
defstudy
(self, course_name)
:print
(f'正在學習.'
)
Python物件導向的程式設計
1 使用類名後跟一對圓括號來建立乙個物件 例項。2 python中的self等價於c 中的this指標。3 init 方法類似於c 中的constructor。4 del 方法類似於c 中的destructor。5 域是屬於乙個物件或類的變數。域有兩種型別 例項變數 物件的變數 和類變數 類的變數 ...
Python 物件導向的程式設計
table of contents 物件導向程式設計 類和物件是物件導向程式設計的兩個主要方面。類 建立乙個新型別,而 物件 是這個類的 例項 類的物件可以使用屬於類的變數和函式,類的變數和函式有兩種 屬於每個例項 類的物件或屬於類本身。就像 c 的類的靜態變數和函式一樣。python 有乙個變數指...
Python 物件導向的程式設計
什麼是物件?物件導向 oop 物件導向的程式語言 物件導向的程式設計思想,將所有的功能統一儲存到對應的物件中 比如,媽媽功能儲存到媽媽的物件中,孩子的功能儲存到孩子物件中 要使用某個功能,直接找到對應的物件即可 這種方式編寫的 比較容易閱讀,並且比較易於維護,容易復用。但是這種方式編寫,不太符合常規...