Python基礎 (八)物件導向2

2021-10-23 13:12:57 字數 4727 閱讀 7272

多型特殊方法和運算過載符

特殊屬性

物件的淺拷貝和深拷貝

組合設計模式

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...