類和對象
類:是對一群具有相同特征和行為的事物的一個(gè)統(tǒng)稱,類是抽象的,是不能直接使用的。
- 特征被稱為屬性
- 行為被稱為方法
對象:是由類創(chuàng)建出來的一個(gè)具體存在,可以直接使用。
dir內(nèi)置函數(shù)
在標(biāo)識符/數(shù)據(jù)后輸入一個(gè).,按下Tab鍵,iPython會提示該對象能夠提供的方法列表
使用內(nèi)置函數(shù)dir傳入標(biāo)識符/數(shù)據(jù),可以查看該對象所有的屬性和方法
提示:__方法名__格式的方法是python提供的內(nèi)置屬性和方法。
In [1]: def demo():
...: print("hello")
In [2]:
In [2]: dir(demo)
Out[2]:
['__annotations__',
'__call__',
'__class__',
'__dict__',
'__dir__',
'__doc__',
'__eq__',
'__format__',
'__str__',
'__subclasshook__']
類的定義
class 類名
def 方法1(self,參數(shù)列表):
pass
def 方法2(self,參數(shù)列表):
pass
對象的創(chuàng)建
對象 = 類名()
class Cat:
def eat(self):
# 哪個(gè)對象調(diào)用,傳遞的就是該對象的引用
print("%s 吃魚" % self.name)
def drink(self):
print("%s 喝水" % self.name)
# 創(chuàng)建對象
tom = Cat()
tom.name = "湯姆貓"
tom.eat()
tom.drink()
注意:可以通過給對象賦值的方法,給類增加屬性,但不推薦使用。
初始化方法
使用類名()創(chuàng)建對象時(shí),會做以下事情:
- 給對象在內(nèi)存中分配存儲空間-創(chuàng)建對象
- 給對象的屬性設(shè)置初始值-初始化方法init
class Cat:
def __init__(self):
print("這是一個(gè)初始化方法")
tom = Cat()
class Cat:
def __init__(self, new_name):
print("這是一個(gè)初始化方法")
self.name = new_name
def eat(self):
print("%s 吃魚" % self.name)
tom = Cat("湯姆貓")
tom.eat()
del方法
在python中,當(dāng)創(chuàng)建一個(gè)對象的時(shí)候會調(diào)用init方法,而當(dāng)一個(gè)對象從內(nèi)存中銷毀的時(shí)候回調(diào)用del方法。
class Cat:
def __init__(self, new_name):
print("這是一個(gè)初始化方法")
self.name = new_name
def eat(self):
print("%s 吃魚" % self.name)
def __del__(self):
print("%s 銷毀了" % self.name )
tom = Cat("湯姆貓")
tom.eat()
# del可以將一個(gè)對象從內(nèi)存中刪除
del tom
print("-" * 50)
str內(nèi)置方法
class Cat:
def __init__(self, new_name):
print("這是一個(gè)初始化方法")
self.name = new_name
def eat(self):
print("%s 吃魚" % self.name)
def __del__(self):
print("%s 銷毀了" % self.name)
def __str__(self):
# 必須返回一個(gè)字符串
return "我是 【%s】" % self.name
tom = Cat("湯姆貓")
tom.eat()
print(tom)