類的介紹1
阿新 • • 發佈:2018-12-08
文章目錄
# 1、類名:
命名規則:大駝峰
兩種類:
經典類
class 類名:
方法列表
** 新式類:**
class 類名(object):
方法列表
#2、屬性:
物件直接新增屬性:
# 定義類 class Cat(object): def soud(self): print ("喵~~~~") # 建立一個物件,並用變數cat1來儲存它的引用 cat1 = Cat() # 給這個物件新增屬性 cat1.color = '白色' cat1.foot_num = 4 # 貓的行為 cat1.soud() #喵~~~~ print cat1.color #白色
__init__設定屬性: 建立物件後,python直譯器預設呼叫__init__()方法;
class 類名(object):
def __init__(self):
# 各個屬性
self.屬性名 = 屬性值
- init(self)中,預設有1個引數名字為self,如果在建立物件時傳遞了2個實參,那麼除了self作為第一個形參外還需要2個形參
- init(self)中的self引數,不需要開發者傳遞,python直譯器會自動把當前的物件引用傳遞進去
- 理解self:就是du物件本身。----某個物件呼叫其方法時,python直譯器會把這個物件作為第一個引數傳遞給self,所以開發者只需要傳遞後面的引數即可
python的魔法方法:方法名如果是__xxxx__()的,那麼就有特殊的功能,因此叫做“魔法”方法;
當使用print輸出物件的時候,只要自己定義了__str__(self)方法,那麼就會列印從在這個方法中return的資料
保護物件的屬性-----避免非法設定屬性值
如果有一個物件,當需要對其進行修改屬性時,有2種方法
- 物件名.屬性名 = 資料 ---->直接修改
- 物件名.方法名() ---->間接修改
class Cat: def __init__(self,name): self.name = name self.age = 1 cat2 = Cat('小阿布') # 修改屬性 cat2.age = -2 # 這明顯是不符合規則的
為了更好的儲存屬性安全,即不能隨意修改,一般的處理方式為
- 將屬性定義為私有屬性self.__name = name
- 新增一個可以呼叫的方法,供呼叫
class Cat:
def __init__(self,name):
self.name = name
def set_age(self, new_age):
if age > 0 and age < 50:
self.age = new_age
else:
self.age = 0
def get_age(self):
return self.age
# 建立物件
cat2 = Cat('小慫')
cat2.set_age(-10)
print cat2.get_age() # 0
cat2.set_age(5)
print cat2.get_age() # 5
** 如果在屬性名前面加了2個下劃線’__’,則表明該屬性是私有屬性,否則為公有屬性(方法也是一樣,方法名前面加了2個下劃線的話表示該方法是私有的,否則為公有的)。**
#3、方法:def 方法名(self,args,…):
私有化方法__方法名(self,args,kwrg): 不能直接被呼叫,可用:物件._類名__方法名(引數) 進行呼叫