多型特殊方法和運算過載符
特殊屬性
物件的淺拷貝和深拷貝
組合設計模式
class 子類類名(父類1[,父類2,…]):
類體
class person:
def __init__(self,name,age):
self.name = name
self.age = age
def say_age(self):
print("年齡")
class student(person):
def __init__(self,name,age,score):
person.__init__(self,name,age) #必須顯示的呼叫父類初始化方法
self.score = score
print(student.mro())
s = student("wwy",18,100)
s.say_age()
class person:
def __init__(self,name,age):
self.name = name
self.__age = age
def say_age(self):
print("我的年齡:",self.__age)
def say_introduce(self):
print("我的名字是".foramt(self.name))
class student(person):
def __init__(self,name,age,score):
person.__init__(self,name,age)
self.score = score
def say_introduce(self):
'''重寫父類方法『』』
print("報告老師,我的名字是:".format(self.name))
s = student("wwy",18,100)
s.say_age()
s.say_introduce()
class person: #預設繼承object類
def __init__(self,name):
self.name=name
def __str__(self): #重寫
return '名字是'.format(self.name)
p=person('wwy')
print(p)
>>> class a:
>>> def say(self):
>>> print('aaa')
>>> class b:
>>> def say(self):
>>> print('bbb')
>>> class c(b,a):
>>> pass
>>> c=c()
>>> c.say()
bbb
class a:
def say(self):
print("a:",self)
class b:
def say(self):
super().say()
print("b:",self)
class man:
def eat(self):
print("餓了吃飯")
class chinese (man):
def eat(self):
print("中國人用筷子吃飯")
class english(man):
def eat(self):
print("英國人用叉子吃飯")
class indian(man):
def eat(self):
print("印度人用右手吃飯")
def maneat(m):
if isinstance(m,man):
m.eat()
else:
print("不能吃飯")
運算子
特殊方法
說明運算子+
add加法
運算子-
sub減法
<,<=,==
lt, le, eq
比較運算子
>, >=,!=
gt, ge, ne
比較運算子
, ^, &
or, xor, __and
異、異或、與
<<, >>
lshift, rshift
左移、右移
*,/, %, //
mul, truediv, mod, floorfiv
乘、浮點數、模運算(取餘)、整數除
**pow
指數運算 方法
說明例子
init
構造方法
物件建立:p = person()
del析構方法
物件**
repr, str
列印,轉換
print(a)
call
函式呼叫
a()getattr
點號運算
a.***
setattr
屬性賦值
a.*** = value
getitem
索引運算
a[key]
setitem
索引賦值
a[key] = value
len長度
len(a)
特殊方法
含義obj.dict物件的屬性字典
obj.class物件所屬的類
class.bases類的基類元組(多繼承)
class.base類的基類
class.mro類層次結構
class.subclasses()
子類列表
b = person()
c = b
class a1:
def say_a1(self):
print("a111")
class b1(a1):
pass
b1 = b1()
b1.say_a1()
class a2:
def say_a2(self):
print("a222")
class b2:
def __init__(self,a):
self.a = a
a2 = a2()
b2 = b2(a2)
b2.a.say_a2()
#測試has-a的關係,使用組合
class mobilephone:
def __init__(self,cpu,screen):
self.cpu = cpu
self.screen = screen
class cpu:
def calculate(self):
print("cpu",self)
class screen:
def show(self):
print("screen物件:",self)
m = mobilephone(cpu(),screen())
m.cpu.calculate()
m.screen.show()
#測試工廠模式
class ca***ctory:
def creatcar(self,brand):
if brand == "賓士":
return benz()
elif brand == "寶馬":
return bmw()
elif brand == "比亞迪":
return byd()
class benz:
pass
class bmw:
pass
class byd:
pass
c = ca***ctory()
c1 = c.creatcar("賓士")
c2 = c.creatcar("寶馬")
print(c1)
print(c2)
#測試單例模式
class mysingleton:
__obj = none
def __new__(cls, *args, **kwargs):
if cls.__obj == none:
cls.__obj = object.__new__(cls)
return cls.__obj
def __init__(self,name):
print("init...")
self.name = name
a = mysingleton("aa")
b = mysingleton("bb")
java基礎整理八(物件導向4)
多型 事物存在的多種體現形態。1,多型的體現 父類的引用指向了自己的子類物件。父類的引用也可以接收自己的子類物件。2,多型的前提 必須是類與類有關係,要麼繼承要麼實現。另乙個前提為 覆蓋 3,多型的好處 大大提高了程式的擴充套件性。4,多型的弊端 只能使用父類的引用訪問父類成員。class duot...
J2SE自學(八) 物件導向之封裝
1 size large 封裝定義 隱藏屬性,方法與方法實現細節的過程稱為封裝 這個定義並不是很準確,但是可以這樣去理解 可以從兩個方面理解 1 隱藏屬性和方法。2 隱藏方法實現細節過程。size 補充 color red size large 封裝的優點 1 隱藏類的實現細節 2 讓使用者只能通過...
python3語言學習筆記(八 物件導向)
和其它程式語言相比,python 在盡可能不增加新的語法和語義的情況下加入了類機制。python中的類提供了物件導向程式設計的所有基本功能 類的繼承機制允許多個基類 多繼承 派生類可以覆蓋基類中的任何方法,方法中可以呼叫基類中的同名方法。物件可以包含任意數量和型別的資料。class classnam...