1.定義類別(class Dog(object))--> 實例化(d = Dog())---> 實例物件( d)
2. __init__() 建構子
3. self.name = name 類別的屬性、成員變數
4. def say_hi() 類別的方法、動態屬性
class Role(object): def __init__(self, name, role, weapon, life_value=100, money=15000): self.name = name self.role = role self.weapon = weapon self.life_value = life_value self.money = money def shot(self): print("%s is shooting..." % self.name) def got_shot(self): print("ah...,%s got shot..." % self.name) def buy_gun(self, gun_name): print("%s just bought %s" % (self.name,gun_name)) r1 = Role('Alex', 'police', 'AK47') # 生成一个角色 r2 = Role('Jack', 'terrorist', 'B22') # 生成一个角色
我們用實例物件.屬性/方法來存取
r1.shot() # 调用shot 方法 r2.buy_gun('B13') # 调用 buy_gun的方法并传参 print(r1.role) # 打印类的属性 # 输出 Alex is shooting... Jack just bought B13 police
r2.buy_gun('B13') print(r2.weapon) # 输出 Jack just bought B13 B22 # 可以发现武器依然是 B22
def buy_gun(self, gun_name): print("%s just bought %s" % (self.name, gun_name)) self.weapon = gun_name # 在方法内改变属性 r2.buy_gun('B13') print(r2.weapon) #输出 Jack just bought B13 B13 # 可以发现武器已经改变
##
3.1、定義私有屬性類類別的屬性一旦定義成私有屬性,就不能被外部呼叫和隨意修改。私有屬性只能在類別是內部使用。
class Person(object): def __init__(self, name, job, phone, address): self.name = name self.job = job self.phone = phone self.__address = address # 定义一个私有属性 def sayhi(self): print("hell,%s" % self.name) p1 = Person('Bigberg', 'Doctor', '8833421', 'hz') print(p1.name) print(p1.__address) # 访问私有属性 # 输出 Bigberg File "G:/python/untitled/study6/类的私有属性.py", line 17, in <module> print(p1.__address) AttributeError: 'Person' object has no attribute '__address'
外部不能直接存取私有屬性,但是在類別的內部可以訪問,所以我們可以定義一個方法來取得私有屬性。 class Person(object):
def __init__(self, name, job, phone, address):
self.name = name
self.job = job
self.phone = phone
self.__address = address
def get_private(self):
return self.__address
def sayhi(self):
print("hell,%s" % self.name)
p1 = Person('Bigberg', 'Doctor', '8833421', 'hz')
res = p1.get_private()
print(res)
# 输出
hz
3.3 強制存取私有屬性
class Person(object): def __init__(self, name, job, phone, address): self.name = name self.job = job self.phone = phone self.__address = address def get_private(self): return self.__address def sayhi(self): print("hell,%s" % self.name) p1 = Person('Bigberg', 'Doctor', '8833421', 'hz') print(p1._Person__address) # 访问私有属性 print("----change----") p1._Person__address = 'BJ' # 修改私有属性 print(p1._Person__address) #输出 hz ----change---- BJ
類別是簡化和最佳化應用程式的重要工具。
1.繼承性:子類別沿用父類別特徵的能力。體現並擴充了物件導向程式設計方法的共享性,使得同類型物件共享資料與程式碼,提高了程式的複用性。父類是可以進一步定義衍生新類的類,子類是以其他類為起點,透過更具體的特徵定義所建立的新類。 2.多態性:一些關聯的類別包含同名的方法程序,但方法程序的內容可以不同。呼叫哪一個在執行時會根據物件的類別來決定,同樣的 訊息被不同的物件接收時可導致不同的行動。 3.抽象性:提取一個類別或物件與眾不同的特徵,而不對該類別或物件其他資訊進行處理。
四、總結
1、定義私有屬性:self.__private_attr_name = private_attr_name
##2、強制存取私有屬性:物件名稱._類別名稱__屬性名稱(d._dog__sex)#############3、對外提供唯讀介面存取:########## ## def get_sex(self):############# return self.__sex######### ##### ##### ##### ##### ###以上是類別的簡介和屬性介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!