python語法基礎(chǔ)定義類Point描述三維空間的一個點屬性包括_第1頁
python語法基礎(chǔ)定義類Point描述三維空間的一個點屬性包括_第2頁
python語法基礎(chǔ)定義類Point描述三維空間的一個點屬性包括_第3頁
python語法基礎(chǔ)定義類Point描述三維空間的一個點屬性包括_第4頁
python語法基礎(chǔ)定義類Point描述三維空間的一個點屬性包括_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

定義一個類Point,描述三的一個點。屬性包括:x、y、z的值。importimportclassdefinit(self,x,y,z):self.x=xself.y=yself.z=defreturnself.x,self.y,self.#計算與另一個點的曼哈頓距離的方defl1_distance(self,#獲取另一個點的x、y、x,y,z=returnabs(self.x-x)+abs(self.y-y)+abs(self.z#計算與另一個點的歐式距離的方defl2_distance(self,#獲取另一個點的x、y、x,y,z=returnmath.sqrt((self.x-x)**2+(self.y-y)**2+(self.z-z)**2)#計算兩個點之間的曼哈頓距離的函defl1_distance(p1,x1,y1,z1=p1.getPoint()x2,y2,z2=returnabs(x1-x2)+abs(y1-y2)+abs(z1-#計算兩個點之間的歐式距離的函defl2_distance(p1,x1,y1,z1=p1.getPoint()x2,y2,z2=returnmath.sqrt((x1-x2)**2+(y1-y2)**2+(z1-p1=Point(1,2,p1=Point(1,2,p2=Point(4,5,print(p1.l1_distance(p2))p1到p2print(p2.l1_distance(p1))#p2到p1度p1p2print(l1_distance(p1,p2))#p1與p2print(p1.l2_distance(p2))#p1到p2print(p2.l2_distance(p1))#p2到p1print(l2_distance(p1,p2))#p1與p2python面向?qū)lassAnimal(object):defeat(self):print('AnimalclassAnimal(object):defeat(self):print('AnimalclassDog(Animal):defprint('DogclassMan(Animal):defprint('ManclassclassWoman(Animal):defeat(self):print('WomandefdoEat(obj):dog1=Dog()man1=Man()woman1=Woman()print(isinstance(dog1,Dog))#Trueprint(isinstance(dog1,Animal))#Trueprint(isinstance(a1,Animal))#Trueprint(isinstance(a1,Dog))#False o',print(isinstance(dog1,Dog))#Trueprint(isinstance(dog1,Animal))#Trueprint(isinstance(a1,Animal))#Trueprint(isinstance(a1,Dog))#False o',Animal))#Falsedef#obj只有是Animal類def#obj只有是Animal類或子類的對象eat方#isinstance()判斷是否是某個類的對數(shù)1object#參數(shù)2type類(類型ifisinstance(obj,Animal):4classclasscount=definit(self,nameDog.count+=defstrreturn%s%d(,Dog.dog1=dog2=Dog('dog3Dog(””””self改為clsclassclass屬count=defdefinit(self,nameDog.count+=defstrreturn%s%d(,Dog.#類方法需要在方法前添加@classmethoddefaddOne(cls):cls.count+=1dog1=dog2=Dog('classclass#對象方defbark2(self): #類方法defbark3(cls):print('#靜態(tài)方defdefdefdog1= #調(diào)用函數(shù) dog1.bark2()#調(diào)用對象方法對象.方法名()Dog.bark3()#調(diào)用類方法類名.方法名()Dog.bark4()#調(diào)用靜態(tài)方法類名.方法名()PS.self、cls都沒有太大關(guān) initdelstrclassdefinitclassdefinit(self):defstr(self):return'dog'defdel(self):defnew(cls):dog1=Dog()#newprint(dog1)#deldel#本來在Dog()的時候需要先后觸發(fā)new和init。其中new創(chuàng)建對象,并把對象返回傳遞給init,這里new沒有返回創(chuàng)建對象,導(dǎo)致init沒有機會執(zhí)行。defnew(cls):defnew(cls):returnobject.new(cls)過父類的new方法創(chuàng)建對象返23種設(shè)計模式,其中一種創(chuàng)建型模式稱為單例。classSun(object):sun1=Sun()sun2=Sun()print(sun2==classSun(object):sun1=Sun()sun2=Sun()print(sun2==此時,需要重寫new方法classclassinstance=defnewifcls.instance==##如果之前還沒有創(chuàng)建則創(chuàng)建對象cls.instance=object.new(cls)returncls.instance#之前創(chuàng)建過了returncls.definit(self):classobj=defnew(cls,#對象在這里創(chuàng)建如果要實現(xiàn)單例即使在外面調(diào)用了多個這一句只能被調(diào)用一#加上條件判斷語句只有第一次進(jìn)來的時候才被調(diào)ifMoon.obj==Moon.obj=object.newnew的返回值將作為self數(shù)傳遞到init回當(dāng)前類對returnMoon.definit(self,=defstrreturn'name:%s'%moon1Moon('圓月'newmoon2Moon('彎月'newclassclassobj=_flagFalseinitinitPS.protecteddefnew(cls,name):#對象在這里創(chuàng)建如果要實現(xiàn)單例#加上條件判斷語句ifMoon.obj==Moon.obj=object.new(cls)newselfinit對returnMoon.objdefinit(self,name):initifMoon._flag==False:=nameMoon._flag=True#否則defstrreturn'name:%s'%PS.+-*classdefinit(self,x,y,z):self.classdefinit(self,x,y,z):self.x=xself.y=yself.z=defreturnself.x,self.y,self.defdefstrreturn'%f,%f,%f'%(self.x,self.y,self.#重載加號操作符point+pointdefadd(self,ifisinstance(other,otherX,otherY,otherZ=other.getPoint()newX=self.x+otherXnewY=self.y+otherYnewZ=self.z+otherZreturnPoint(newX,newY,p1=Point(1,2,3)p2=Point(7,8,9)p3=p1+p2classAnimal(object):a=print(a.classAnimal(object):a=print(a.class)#<class'main #<class'mainclassAnimal(object):classHorse(Animal):classLv(Animal):classAnimal(object):classHorse(Animal):classLv(Animal):classLuo(Horse,Lv):luo=luo=print(Luo.base)#<class'main.Horse'>print(Luo.bases)#(<class'main.Horse'>,<class'main.Lv'>)classAnimal(object):print(AclassAnimal(object):print(A)#print(name)#注意:在當(dāng)前環(huán)境下有屬性:name的值為main,表示程序的主。相當(dāng)于C語main()函數(shù)。classAnimal(object):print(Animal.classAnimal(object):print(Animal.module)#classage=classage=print(Animal.dict)#class物類class物類以被其他類所繼承print(Animal.doc物類propertyclassdefinit(self,name,age):self.classdefinit(self,name,age):=nameself.age=defstrreturn'name:%s,age:%d'%(,self.defage(self):returnself.agedefage(self,age):self.age=dog1=Dog(' ',11)dog1.age=8dog1=Dog(' 'dog1=Dog(' ',11)dog1.age=defdefage(self,age):ifage>0:self.age=dog1=Dog(' ',11)dog1.age=-8dog1=Dog(' ',11)dog1.age=-8classclassdefinit(self,name,age):=nameself.age=defstrreturn'name:%s,age:%d'%(,self.@property#name=defname(self):@name.setter#name=defname(self,name):=然后,在主流程的文件中(main.py),Dog模塊,并使用其中的類或函數(shù)等標(biāo)識符。import模塊名##導(dǎo)入Dog模importdog2dog.Dog('二哈'11)='snoopy'fromimportfromfromdogimportdog3Dog('三水'12)='xx'fromfromdogimportDog,fromfromdogimportfromdogimportHabaDogasfromdogimpor

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論