1. 程式人生 > >python學習第十七天

python學習第十七天

一、類與類之間的關係

1.依賴關係
在方法中給方法傳遞一個物件。此時類與類的關係是最輕的
練習:
class DaXiang():
def open(self, thing):
print('大象')
thing.op()
print('開啟%s' % thing.name)

def zhuang(self, thing):
print('大象自己走進%s' % thing.name)

def cl(self, thing):
thing.cl()
print('大象自己關%s門' % thing.name)

class BingXiang():
name = '冰箱'
def op(self):
print("%s自己開啟門" % BingXiang.name)
def cl(self):
print('%s自己關門' % BingXiang.name)

bx = BingXiang()
da = DaXiang()
da.open(bx)
da.zhuang(bx)
da.cl(bx)

class plants():
def __init__(self, pname, gon):
self.pname = pname
self.gon = gon

def da(self, js):
print('我是%s,我要打殭屍,我的攻擊力是:%s' % (self.pname, self.gon))
js.beida()
print('現在殭屍的血量是:%s' % (js.boold - self.gon))


class jiang():
def __init__(self, jname, boold):
self.jname = jname
self.boold = boold
def beida(self):
print('我是%s殭屍,我被打了!' % (self.jname))


z = plants('仙人掌', 20)
j = jiang('飛行', 80)
z.da(j)


2.關聯關係(組合,聚合)
def __init__(self, name, xxLis = None):
self.name = name
if lst == None:
self.lst = []
else:
self.lst = lst
def __init__(self, name, thing):
self.name = name
self.thing = thing

練習:
class Boy():
def __init__(self, name, girlFriend = None):
self.name = name
self.girlFriend = girlFriend

def wan(self):
if self.girlFriend:
print('%s 和 %s 一起去吃飯' % (self.name, self.girlFriend.name))
else:
print('單身狗你沒女朋友,辣雞')
class Girl():
def __init__(self, name):
self.name = name
b = Boy('Euan')
g = Girl('ye')
b.girlFriend = g
b.wan()
b1 = Boy('Euan')
g1 = Girl('ye')
b1.wan()

class Teacher():
def __init__(self, name, lst=None):
self.name = name
if lst == None:
self.lst = []
else:
self.lst = lst

def add(self, student):
self.lst.append(student)

def display(self):
for s in self.lst:
print(s.name)

class Student():
def __init__(self, num, name, teacher=None):
self.name = name
self.num = num
self.teacher = teacher

t = Teacher('Euan')
s1 = Student(1,'a')
s2 = Student(2,'b')
s3 = Student(3,'c')
s4 = Student(4,'d')
t.add(s1)
t.add(s2)
t.add(s4)
t.display()


3.簡單繼承
self : 誰呼叫的,self就是誰


二、特殊成員
__init__()
初始化方法
__new__()
構造方法,用來建立物件,開闢記憶體
__call__()
呼叫:物件() 會自動執行
__getitem__()
物件[key] 會自動執
__setitem__()
物件[key] 會自動執行 物件[任意引數] => __getitem__(item)
__delitem__()
del 物件[key] 會自動執行 __delitem__()
__enter__() __exit__()
with 物件 as 變數 會自動執行 進入:__enter__ 和 出去:__exit__
__str__()
當列印一個物件的時候. 預設的去執行__str__ 根據__str__返回的結果進行列印
__repr__()
一個物件的官方字串表示形式
__hash__()
雜湊演算法 hash(c) __hash()__ == None 可是物件不可雜湊
__len__()
物件的長度 len(c)
__iter__()
迭代
__add__()
物件 + 物件
__name__
類的名字(字串)
__doc__
類的文件字串
__bases__
類的所有父類組成的元組
__dict__
類的屬性組成的字典
__module__
類所屬的模組
__class__
類物件的型別