第乙個概念:在物件導向程式設計中,物件將變數和方法集中在乙個地方,即物件本身。
第二個概念:指的是隱藏類的內部資料,避免客戶端**直接進行訪問。
class data:
def __init__(self):
self.list1=[22,33,44,55,66]
def chang_list(self,index,num):
self.list1[index]=num
data1=data()
data1.list1[0]=100
print(data1.list1)
data2=data()
data2.chang_list(0,100)
print(data2.list1)
它是指剝離事物的諸多特性,使其只保留最基本的物質的過程。在物件導向程式設計中,使用類進行物件建模時就會用到抽象的技巧。
import abc
class animal(metaclass=abc.abcmeta):
@abc.abstractmethod #抽象的物件方法
def sound(self):
pass
@abc.abstractclassmethod#抽象的類方法
def test1(cls):
pass
@abc.abstractstaticmethod#抽象的靜態方法
def test2(self):
pass
class dog(animal):
def sound(self):
print("wang wang")
@classmethod
def test1(cls):
print("class of method")
@staticmethod
def test2():
print("static of method")
dog=dog()
dog.sound()
dog.test1()
dog.test1()
dog.test2()
dog.test2()
1)、將公共的屬性和方法放到父類中,自己只考慮特有的屬性和方法。
2)、覆蓋父類的方法即重寫父類方法,在執行中只會呼叫子類中重寫的方法不用呼叫父類中的方法。
3)、子類擁有乙個父類叫作單繼承,子類可以擁有多個父類,並且具有所有父類的屬性和方法。
class student:
def study(self):
print("學生要學習")
def practice(self):
print("學習完成要練習")
class highstudent(student):
def study_compute(self):
print("高中同學還要學習計算機")
hs=highstudent()
hs.study()
hs.practice()
hs.study_compute()
1)、指的是為不同的基礎形態(資料型別)提供著介面的能力,介面指的是函式和方法。
3)、多型意味著變數並不知道引用的物件是什麼,根據引用物件的不同表現不同的行為方式。
4)、多型以封裝和繼承為前提,不同的子類物件呼叫相同的方法,產生不同的執行效果。它可以增加**的靈活度,以繼承和重寫父類的方法為前提,呼叫方法不會影響到類的內部設計
class animals(object):
def __init__(self,name):
self.name=name
def eat(self):
print(self.name+" is eating")
class cat(animals):
def __init__(self,name):
super(cat, self).__init__(name)
class pig(animals):
def __init__(self,name):
super(pig, self).__init__(name)
class person():
def feedanimal(self,animal):
animal.eat()
cat=cat("tom")
pig=pig("peiqi")
tony=person()
tony.feedanimal(cat)
tony.feedanimal(pig)
1)、通過組合技巧將乙個物件作用變數儲存在另乙個物件中,可以模擬擁有關係。
2)、它是一種將物件或類組合成更複雜的資料結構或構件實現的方法。
3)、在組合中,乙個物件可用於呼叫其他模組中的成員函式,這樣一來,無需通過繼承就可以實現基本功能的跨模組呼叫。
class monkey():
def __init__(self,name,owner):
self.name=name
self.owner=owner
class persons():
def __init__(self,name):
self.name=name
mike=persons("mike")
mickmouse=monkey("goldemonkey",mike)
print(mickmouse.owner.name)
class a(object):
def a1(self):
print("a1")
class b(object):
def b1(self):
print("b1")
a().a1()
bb=b()
bb.b1()
總結: Python物件導向的程式設計
1 使用類名後跟一對圓括號來建立乙個物件 例項。2 python中的self等價於c 中的this指標。3 init 方法類似於c 中的constructor。4 del 方法類似於c 中的destructor。5 域是屬於乙個物件或類的變數。域有兩種型別 例項變數 物件的變數 和類變數 類的變數 ...
Python 物件導向的程式設計
table of contents 物件導向程式設計 類和物件是物件導向程式設計的兩個主要方面。類 建立乙個新型別,而 物件 是這個類的 例項 類的物件可以使用屬於類的變數和函式,類的變數和函式有兩種 屬於每個例項 類的物件或屬於類本身。就像 c 的類的靜態變數和函式一樣。python 有乙個變數指...
Python 物件導向的程式設計
什麼是物件?物件導向 oop 物件導向的程式語言 物件導向的程式設計思想,將所有的功能統一儲存到對應的物件中 比如,媽媽功能儲存到媽媽的物件中,孩子的功能儲存到孩子物件中 要使用某個功能,直接找到對應的物件即可 這種方式編寫的 比較容易閱讀,並且比較易於維護,容易復用。但是這種方式編寫,不太符合常規...