黑馬python基礎班 day07

2021-10-08 06:20:26 字數 4043 閱讀 1823

# 1:類屬性:在類裡面和方法外面定義的屬性稱為類屬性,類屬性屬於當前類。

# 例項屬性:(物件屬性):在init方法裡面定義的屬性稱為例項物件,例項屬性屬於某個物件。

class

person

(object):

"""定義類屬性和例項屬性"""

# 類屬性

__country =

"中國"

skin_color =

"yellow"

def__init__

(self, name, age)

:# 例項屬性

self.name = name

self.age = age

p = person(

"王昭君",20

)# 訪問例項屬性

print

(p.name)

# 修改例項屬性

p.name =

"李四"

person.name =

"王五"

# 檢視類中的所有類屬性和方法

print

(person.__dict__)

## 檢視類中的例項屬性和方法

print

(p.__dict__)

## 物件可以訪問類屬性,但是不能夠修改類屬性

p = person(

"李四",20

)print

(p.skin_color)

# 如果物件想要修改類屬性怎麼做???

# 定義類方法,進行呼叫

# 2:多肽:,呼叫相同的方法,出現的不同的表現形式。

# 場景:不同的物件,想要完成相同的操作。

deffly

(obj)

: obj.fly(

)class

duck

(object):

deffly

(self)

:print

("鴨子飛......."

)duck = duck(

)fly(duck)

class

swan

(object):

deffly

(self)

:print

("天鵝飛......"

)swan = swan(

)fly(swan)

# 3:方法的種類:

# 例項方法:方法第乙個引數是self

# 類方法:方法第乙個引數是cls ,方法上有@classmethod關鍵字

# 靜態方法:無self和cls關鍵字 ,方法上用@staticmethod關鍵字

#例項方法使用的場景:對私有例項屬性的操作可以通過例項方法來完成

class

tercher

(object):

def__init__

(self, name, age)

: self.name = name

self.__age = age

defget_age

(self)

:return self.__age

# 例項方法可以通過例項,也可以通過類來完成。

t1 = tercher(

"王老師",30

)age = t1.get_age(

)print

(age)

age = tercher.get_age(t1)

print

(age)

# 類方法:

class

teacher2

(object):

__country =

"南韓"

@classmethod

defget_country

(cls)

:print

("當前的類是:"

, cls)

#對於私有類屬性的操作可以使用類方法

return cls.__country

country = teacher2.get_country(

)print

(country)

# 類方法也可以使用物件來呼叫,但不推薦,因為不方便,還要建立乙個物件

t2 = teacher2(

)country = t2.get_country(

)print

(country)

# 靜態方法:

class

tercher3

(object):

def__init__

(self, name, age)

: self.name = name

self.__age = age

defget_age

(self)

:return self.__age

@staticmethod

defsum

(num1, num2)

:return num1 + num2

result = tercher3.

sum(1,

2)print

(result)

異常捕獲機制:

# 1:異常捕獲機制

# 格式:

# try:

# 執行**

# except:

# 捕獲的異常

# 案例1:陣列下標越界

try:

my_lsit =[1

,3,5

] my_lsit[10]

except indexerror as e:

print

("異常資訊為:"

, e)

# 執行結果:

# 異常資訊為: list index out of range

# 案例2:鍵錯誤

try:

my_dict =

*** = my_dict[

"***"

]except keyerror as e:

print

("異常資訊為:"

, e,

type

(e))

# 輸出結果是:

# 異常資訊為: '***'

# 注意:異常資訊一般指定exception即可,因為大多數的異常類繼承這個類。

# 擴充套件:如果想要捕獲任何的異常資訊,則可以指定baseexception(異常類的根類)

# 2:捕獲異常的完整語句:

# try:

# 可能出現異常的語句

# except exception as e:

# **出現的異常

# else:

# **執行時無異常則執行的語句

# finally:

# 必須執行的**

## 3:異常的傳遞:

# 當執行**是如果遇到了錯誤,異常會從**內部往外一層層的進行傳遞

# 如果遇到最外層也沒有捕獲,那麼程式崩潰。

# 4:自定義異常:

# 注:自定義異常必須繼承baseexception 或 exception

class

myexception

(exception)

:def

__init__

(self, error_msg)

: self.error_msg = error_msg

def__str__

(self)

:return self.error_msg

passworld =

input

("請輸入您的密碼:"

)try:if

len(passworld)

<6:

raise myexception(

"密碼不夠6位!!!"

)except exception as e:

print

("出現異常了:"

, e,

type

(e))

Python學習筆記 day0

本部落格標題設計敏感關鍵字0day,違反相關法律法規,現已處理。1.輸入 raw input 這個可以輸入一行。和c 不同,它不能讀取單個整數 我的意思是,它是以字串儲存的。所以沒有什麼諸如 d這種東西。name raw input 這樣就可以讀入乙個字串,相當於gets name 考慮到人性化設計...

python闖關 python闖關 Day05

乙個簡單的 選單 usr bin env python coding utf 8 mymenu 動物 貓 黃貓 花貓 狗 二哈 金毛 植物 樹 大樹 小樹 草 綠草 矮草 menu list list mymenu.keys while true print 編號 center 50,for i i...

python闖關 python闖關 Day02

q1 寫乙個使用者迴圈猜年齡的遊戲,猜對就退出,猜不對就繼續猜,猜三次,提示使用者是否繼續,使用者回答y或者y就繼續猜,三次之後再重複,回答n或n就結束遊戲。usr bin env python coding utf 8 猜年齡 import random age random.randint 1,...