python極簡教程08 物件的方法

2022-09-18 18:36:11 字數 2034 閱讀 6463

測試奇譚,bug不見。

講解之前,我先說說我的教程和網上其他教程的區別:

1 我分享的是我在工作中高頻使用的場景,是精華內容;

2 我分享的是學習方法,亦或說,是指明你該學哪些、該重點掌握哪些內容;

這一場,主講python的物件導向的第二部分——物件的方法

目的:掌握python物件的五個核心方法。

講解之前,先上一段**

class demo:

def __init__(self, name):

print("init")

print("init " + name)

def __new__(cls, *args, **kwargs):

print("new")

print("new " + args[0])

d = demo("張三")

通過前面的學習,你能說出這段**執行的輸出結果嗎?

答案是:

#new

#new 張三

通常,我們會認為__init__()是類的初始化方法,當例項化類之後,會優先執行它(執行後應當優先輸出"init"、"init 張三"),但實際上,__new__()方法才優先執行的方法,同時,它也是建立物件的方法。

說得通俗一點:以造房子舉例,new方法是打地基,存放建材原料,init方法則是按照圖紙建造房子。

那麼,什麼時候用new方法?

其實,用得很少,更多的時候,我們使用的是init方法。但init方法用久了之後,就會誤以為它是建立例項的方法,而實際上,new方法才是建立例項的方法。

大家謹記,以免面試時踩坑。

首先,先講講這三個方法如何使用。

class cat:

age = 5

area = 'chengdu'

def __init__(self, name):

self.name = name

# 這是乙個有問題的方法

def drink():

print("cat drink")

# 這是乙個靜態方法

@staticmethod

def eat(food):

print("cat eat {}".format(food))

# 這是乙個物件方法

def get_name(self):

return self.name

# 這是乙個類方法

@classmethod

def info(cls):

print(cls.age)

print(cls.area)

print(self.name)

# 例項化乙隻叫kitty的黑貓

black_cat = cat('kitty')

# 有問題的方法,直接報錯了

# black_cat.drink()

# 靜態方法呼叫

black_cat.eat('fish') # 可以例項(black_cat)呼叫

cat.eat('fish') # 也可以類(cat)呼叫

# 類方法呼叫

black_cat.info() # 可以例項(black_cat)呼叫

cat.info() # 也可以類(cat)呼叫

# 物件方法呼叫

print(black_cat.get_name()) # 只能例項(black_cat)呼叫

到這裡,你可能會問,這東西有啥用?

如果你只想寫個指令碼,執行一些簡單的程式,那確實沒啥用。你可以不關心這三個方法以及他們的呼叫,甚至連class類都不用寫,直接def搞定。

但是,如果你想高階,理解物件導向,它們很重要。

01 我知道,對於初學者來說,物件導向,這個抽象的概念很難理解,但是,我沒說,你一定要理解;

02 如果確實沒有編碼基礎,先學會用,在用的過程中去理解,不更好嗎?

Python 極簡教程(十四)while 迴圈

迴圈簡單來說就是讓一段 按你想要的方式多次執行。軟體擁有強大的運算能力,就是由迴圈提供的。在 python 中支援的迴圈由兩種 while迴圈 和for迴圈。現在我們先來講while迴圈。while 的中文意思為當 的時候。顧名思義,當條件滿足的時候做什麼事情。來看看 while 語句的格式 whi...

極簡Python學習教程 Class類

眾所周知,python是一門物件導向的程式語言,物件導向的程式語言 自然而然的 跟 類class 不可分割。那什麼是類class呢?類其實就是一種自定義資料型別,跟c 中的 int float double等基本資料型別 相似。類class 包含了 成員變數 和 成員函式 以下是簡單的示例 pyth...

Python 極簡教程(三)資料型別

每種語言都有各種資料型別。這就像在現實生活中,我們計數的時候需要用到數字,在表述金額 重量 距離等需要精確計數時用到小數,在日常交談中要用文字,等等。在計算機語言中,為了表述不同的情況,也需要用到各種資料型別。在 python 主要有數值型別 int,float 字串型別,布林型和空值。python...