1. 程式人生 > >類的介紹1

類的介紹1

文章目錄


# 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): 不能直接被呼叫,可用:物件._類名__方法名(引數) 進行呼叫