物件導向的高階2

2022-06-01 03:45:12 字數 1608 閱讀 2153

class

good():

def__init__

(self):

self.original=100self.discount = 0.8@property

defprice(self):

new_price=self.original*self.discount

return

new_price

@price.setter

defprice(self,value):

self.original=value

@price.deleter

defprice(self,value):

delself.original

def__del__

(self):

pass

def__call__(self, *args, **kwargs):

pass

#obj=good()

#print(obj.price)

#obj.price = 200

## del obj.price

#print(obj.price)

'''1.__doc__:類的描述資訊

2.__module__:當前操作的物件在哪個模組

3.__class__:當前操作的類是什麼

4.__call__:物件後面加括號,觸發執行

5.__dict__:類或物件中的所有成員

6.__getitem__,__setitem__,__delitem__:用於索引操作,如字典。以上分別獲取、設定、刪除資料

7.__del__:析構方法,當物件在記憶體中被釋放時,自動觸發執行。可以寫一些,資料庫或是檔案的關閉操作

8.__iter__:用於迭代器,之所以列表、字典、元祖可以進行for迴圈,是因為型別內部定義了__iter__

'''from copy檔案 import

aclass

c:

'''去年買個包

'''def

__init__

(self):

self.name='

dog'

def__call__(self, *args, **kwargs):

print('

__call__')

a=a()

c=c()

c()()

#執行call方法

print(c.__doc__)#

去年買個包

print(c.__module__)#

__main__

print(a.__module__)#

copy檔案

print(c.__class__)#

print(a.__class__)#

print(a.__dict__)#

{}print(c.__dict__)#

#s=str(123).__iter__()

#print(s.__next__)

defmy_range(bound):

for i in

range(bound):

return

ia=my_range(100)

物件導向高階2 繼承

繼承 var a b a 把a這個物件賦給b這個物件 b.name jack alert a.name 修改了a的值 b for var attr in a b.name jack alert a.name anikin 不會修改a物件的值,這個就是拷貝繼承的核心原理 繼承 子類不影響父類 func...

物件導向的高階程式設計

在定義class的時候,定義乙個特殊的 solts 變數,來限制class例項能新增的屬性 class student object solts name age 用tuple定義允許繫結的屬性名稱 s student 建立新的例項 s.name michael 繫結屬性 name s.age 25...

物件導向及高階

import hashlib password 125156 md5 obj hashlib.md5 bin encode md5 obj.update password.encode ret md5 obj.hexdigest print ret 注 物件 即 bin password 在被雜湊 ...