類屬性:num=0
例項屬性:self.x=4 self.y=5 c.count=6
在變數名或者函式名前加上兩個下劃線(__),這個函式或者變數就會變成私有
修改完的程式:
class c:
def myfun(self):
print('hello!')
c=c()
c.myfun()
class ticket:
def __init__(self,p=100, tp=0):
self.price = p
self.total_price = tp
def cost(self):
day = int(input("您想要購買哪天的票?請輸入正整數1-7:"))
adult = int(input("請輸入需要購買大人的票數(張):"))
child = int(input("請輸入需要購買兒童的票數(張):"))
if day in range(1, 6):
self.total_price= adult * self.price + child * self.price * 0.5
print('總票價為:',self.total_price)
elif day in range(6, 8):
self.total_price = adult * self.price * 1.2 + child * self.price * 1.2 * 0.5
print('總票價為:',self.total_price)
m=ticket()
m.cost()
結果:
>>>
*************** restart: d:\baidunetdiskdownload\python3\練習.py ***************
您想要購買哪天的票?請輸入正整數1-7:1
請輸入需要購買大人的票數(張):2
請輸入需要購買兒童的票數(張):1
總票價為: 250.0
>>>
*************** restart: d:\baidunetdiskdownload\python3\練習.py ***************
您想要購買哪天的票?請輸入正整數1-7:7
請輸入需要購買大人的票數(張):2
請輸入需要購買兒童的票數(張):1
總票價為: 300.0
new:
new是在乙個物件例項化的時候所呼叫的第乙個方法,在呼叫init初始化前,先呼叫new。
new至少要有乙個引數 cls ,代表要例項化的類,此引數在例項化時由 python 直譯器自動提供,後面的引數直接傳遞給init。
new對當前類進行了例項化,並將例項返回,傳給init的 self 。但是,執行了new,並不一定會進入init,只有new返回了,當前類 cls 的例項,當前類的init才會進入。
若new沒有正確返回當前類 cls 的例項,那init是不會被呼叫的,即使是父類的例項也不行,將
沒有init被呼叫
init:
init(self[, …]) 構造器,當乙個例項被建立的時候呼叫的初始化方法
str:
str(self) :
當你列印乙個物件的時候,觸發str
當你使用 %s 格式化的時候,觸發str
str 強轉資料型別的時候,觸發str
str(self) 的返回結果可讀性強。也就是說,str的意義是得到便於人們閱讀的資訊
repr:
repr(self):
有str的時候執行str,沒有實現str的時候,執行repr
repr(obj) 內建函式對應的結果是repr的返回值
當你使用 %r 格式化的時候 觸發repr
repr(self) 的返回結果應更準確。怎麼說,repr存在的目的在於除錯,便於開發者使用
getitem:
getitem(self, key) 定義獲取容器中元素的行為,相當於 self[key]
setitem:
setitem(self, key, value) 定義設定容器中指定元素的行為,相當於 self[key] = value
類與物件(2) 魔法方法
定義init魔法方法,設定初始化屬性,訪問並呼叫 1.定義類 init魔法方法 width和height 新增例項方法 訪問例項屬性 2 建立物件 3 驗證成果 呼叫例項方法 class washer def init self 新增例項屬性 self.width 500 self.height 8...
ziheng 類與物件和魔法方法
class tangsen def init self self.name tangsen self.gongji 80 self.magic 500 self.hp 2000 self.speed 100 defhuo de hp self print self.hp defshe zhi hp ...
六 類 物件與魔法方法
1 類定義中哪些是類屬性,哪些是例項屬性?python類資料屬性 定義在類裡面但在函式外面的變數,它們都是靜態的。定義在 init 方法裡的變數就是例項屬性,這些屬性只有物件被建立時才會被建立。2 怎麼定義私有 法?在 python 中定義私有方法只需要在函式名前加上兩個下劃線 那麼這個方法 函式 ...