導航:首頁 > 編程語言 > python面向對象編程題

python面向對象編程題

發布時間:2022-07-23 22:45:16

python面向對象編程

classTime:
def__init__(self,hours,minutes,seconds):
self.__hours=hours
self.__minutes=minutes
self.__seconds=seconds

defhours(self):
returnself.__hours

defminutes(self):
returnself.__minutes

defseconds(self):
returnself.__seconds

def__add__(self,other):#定義加法行為
pass

def__sub__(self,other):#定義減法行為
pass

def__eq__(self,other):#定義等於號行為
pass

def__lt__(self,other):#定義小於號行為
pass

寫出大致框架,自行完善後面的四個魔法方法

❷ 利用Python面向對象的編程,求出正方形(4),長方形(3,5)的面積和周長,代碼怎麼寫

Private Sub Command1_Click()
這樣寫(你不是定義數組,而是定義變數):
Dim a As Double
Dim b As Double
a=val(text1.text)
b=val(text2.text)
Text3.Text = Str(a * b)
End Sub

❸ Python編程 面向對象程序設計

面向過程:根據業務邏輯從上到下寫壘代碼
函數式:將某功能代碼封裝到函數中,日後便無需重復編寫,僅調用函數即可
面向對象:對函數進行分類和封裝,讓開發「更快更好更強...」
面向過程編程最易被初學者接受,其往往用一長段代碼來實現指定功能,開發過程中最常見的操作就是粘貼復制,即:將之前實現的代碼塊復制到現需功能處。

❹ python面向對象編程作業

importre
classderivative:
def__init__(self,s):
self.s='+'+sifs[0]notin['+','-']elses

def__analysis__(self):
self.ite=list(re.finditer('[+-]',self.s))

self.items=[xforxinre.split(r'[+-]',self.s)ifx!='']
self.pm=[self.s[i.span()[0]]foriinself.ite]
self.var=[k[k.find('^')-1]forkinself.itemsifk.find('^')>-1][0]

self.ratio=[]
self.power=[]

foriteminself.items:
j=item.find('^')
k=item.find(self.var)
ifj>-1:
self.power.append(int(item[j+1]))
elifk>-1:
self.power.append(1)
else:
self.power.append(0)

foriteminself.items:
k=item.find('*')
ifk>-1:
self.ratio.append(int(item[k-1]))
elifitem.find(self.var)>-1:
self.ratio.append(1)
else:
self.ratio.append(int(item))

self.items=[t[1]fortinsorted(list(zip(self.power,self.items)),reverse=True)]
self.ratio=[t[1]fortinsorted(list(zip(self.power,self.ratio)),reverse=True)]
self.pm=[t[1]fortinsorted(list(zip(self.power,self.pm)),reverse=True)]
self.power.sort(reverse=True)

def__derivative__(self):
power=[x-1ifx>1else0forxinself.power]
ratio=[]
foriinrange(len(self.power)):
ifself.power[i]>1:
ratio.append(self.power[i]*self.ratio[i])
elifself.power[i]==1:
ratio.append(self.ratio[i])
else:
ratio.append(0)

items=[]
foriinrange(len(self.power)):
ifratio[i]==0:
continue
item=self.pm[i]

ifratio[i]>0:
item+=str(ratio[i])
ifpower[i]>0:
item+='*'+self.var
ifpower[i]>1:
item+='^'+str(power[i])
items.append(item)

self.out_s=''.join(items)
ifself.out_s[0]=='+':
self.out_s=self.out_s[1:]

defder(self):
self.__analysis__()
self.__derivative__()
returnself.out_s


s='2*x^3+3*x^2+5*x+1'
d=derivative(s)
print(d.der())
s='-5*x^6-3*x^3+12-4*x^4'
d=derivative(s)
print(d.der())

「不恰當的輸入」不知道要處理什麼級別的錯誤,所以沒搞。自己根據需求去搞吧。

❺ Python面向對象程序設計題,設計一個選課系統,要求如下:

你這完全是一個小軟體拉,想著是沒有人會直接回源碼的吧,且還是面向對象的.用tkinter,還是pyqt等,都沒有說.

❻ python使用面向對象的編程方法完成「超市管理系統」的編寫

是代碼有bug需要調試,還是別的

❼ Python面向對象編程之繼承與多態詳解

Python面向對象編程之繼承與多態詳解
本文實例講述了Python面向對象編程之繼承與多態。分享給大家供大家參考,具體如下:
Python 類的繼承
在OOP(Object Oriented Programming)程序設計中,當我們定義一個class的時候,可以從某個現有的class 繼承,新的class稱為子類(Subclass),而被繼承的class稱為基類、父類或超類(Base class、Super class)。
我們先來定義一個class Person,表示人,定義屬性變數 name 及 sex (姓名和性別);
定義一個方法print_title():當sex是male時,print man;當sex 是female時,print woman。參考如下代碼:
class Person(object):
def __init__(self,name,sex):
self.name = name
self.sex = sex
def print_title(self):
if self.sex == "male":
print("man")
elif self.sex == "female":
print("woman")
class Child(Person): # Child 繼承 Person
pass
May = Child("May","female")
Peter = Person("Peter","male")
print(May.name,May.sex,Peter.name,Peter.sex) # 子類繼承父類方法及屬性
May.print_title()
Peter.print_title()

而我們編寫 Child 類,完全可以繼承 Person 類(Child 就是 Person);使用 class subclass_name(baseclass_name) 來表示繼承;

繼承有什麼好處?最大的好處是子類獲得了父類的全部屬性及功能。如下 Child 類就可以直接使用父類的 print_title() 方法

實例化Child的時候,子類繼承了父類的構造函數,就需要提供父類Person要求的兩個屬性變數 name 及 sex:

在繼承關系中,如果一個實例的數據類型是某個子類,那它也可以被看做是父類(May 既是 Child 又是 Person)。但是,反過來就不行(Peter 僅是 Person,而不是Child)。

繼承還可以一級一級地繼承下來,就好比從爺爺到爸爸、再到兒子這樣的關系。而任何類,最終都可以追溯到根類object,這些繼承關系看上去就像一顆倒著的樹。比如如下的繼承樹:

isinstance() 及 issubclass()

Python 與其他語言不同點在於,當我們定義一個 class 的時候,我們實際上就定義了一種數據類型。我們定義的數據類型和Python自帶的數據類型,比如str、list、dict沒什麼兩樣。

Python 有兩個判斷繼承的函數:isinstance() 用於檢查實例類型;issubclass() 用於檢查類繼承。參見下方示例:

class Person(object):
pass
class Child(Person): # Child 繼承 Person
pass
May = Child()
Peter = Person()
print(isinstance(May,Child)) # True
print(isinstance(May,Person)) # True
print(isinstance(Peter,Child)) # False
print(isinstance(Peter,Person)) # True
print(issubclass(Child,Person)) # True

Python 類的多態

在說明多態是什麼之前,我們在 Child 類中重寫 print_title() 方法:若為male,print boy;若為female,print girl
class Person(object):
def __init__(self,name,sex):
self.name = name
self.sex = sex
def print_title(self):
if self.sex == "male":
print("man")
elif self.sex == "female":
print("woman")
class Child(Person): # Child 繼承 Person
def print_title(self):
if self.sex == "male":
print("boy")
elif self.sex == "female":
print("girl")
May = Child("May","female")
Peter = Person("Peter","male")
print(May.name,May.sex,Peter.name,Peter.sex)
May.print_title()
Peter.print_title()

當子類和父類都存在相同的 print_title()方法時,子類的 print_title() 覆蓋了父類的 print_title(),在代碼運行時,會調用子類的 print_title()

這樣,我們就獲得了繼承的另一個好處:多態。

多態的好處就是,當我們需要傳入更多的子類,例如新增 Teenagers、Grownups 等時,我們只需要繼承 Person 類型就可以了,而print_title()方法既可以直不重寫(即使用Person的),也可以重寫一個特有的。這就是多態的意思。調用方只管調用,不管細節,而當我們新增一種Person的子類時,只要確保新方法編寫正確,而不用管原來的代碼。這就是著名的「開閉」原則:

對擴展開放(Open for extension):允許子類重寫方法函數

對修改封閉(Closed for modification):不重寫,直接繼承父類方法函數

子類重寫構造函數

子類可以沒有構造函數,表示同父類構造一致;子類也可重寫構造函數;現在,我們需要在子類 Child 中新增兩個屬性變數:mother 和 father,我們可以構造如下(建議子類調用父類的構造方法,參見後續代碼):
class Person(object):
def __init__(self,name,sex):
self.name = name
self.sex = sex
class Child(Person): # Child 繼承 Person
def __init__(self,name,sex,mother,father):
self.name = name
self.sex = sex
self.mother = mother
self.father = father
May = Child("May","female","April","June")
print(May.name,May.sex,May.mother,May.father)

若父類構造函數包含很多屬性,子類僅需新增1、2個,會有不少冗餘的代碼,這邊,子類可對父類的構造方法進行調用,參考如下:
class Person(object):
def __init__(self,name,sex):
self.name = name
self.sex = sex
class Child(Person): # Child 繼承 Person
def __init__(self,name,sex,mother,father):
Person.__init__(self,name,sex) # 子類對父類的構造方法的調用
self.mother = mother
self.father = father
May = Child("May","female","April","June")
print(May.name,May.sex,May.mother,May.father)

多重繼承

多重繼承的概念應該比較好理解,比如現在需要新建一個類 baby 繼承 Child , 可繼承父類及父類上層類的屬性及方法,優先使用層類近的方法,代碼參考如下:
class Person(object):
def __init__(self,name,sex):
self.name = name
self.sex = sex
def print_title(self):
if self.sex == "male":
print("man")
elif self.sex == "female":
print("woman")
class Child(Person):
pass
class Baby(Child):
pass
May = Baby("May","female") # 繼承上上層父類的屬性
print(May.name,May.sex)
May.print_title() # 可使用上上層父類的方法
class Child(Person):
def print_title(self):
if self.sex == "male":
print("boy")
elif self.sex == "female":
print("girl")
class Baby(Child):
pass
May = Baby("May","female")
May.print_title() # 優先使用上層類的方法

❽ python面向對象編程題

父類省份,子類地級城市繼承父類

地級城市屬性:姓名、商品數量、基金數目
地級城市方法:買,對應功能1;賣,對應功能2

主方法中包含變數:自己(qinshihuang),周邊市供應商(liubang),買家(hanxin),利潤期望
隨機變數是商品銷售數
初始狀態是先從供應商買走4件商品,然後關鍵在於被退回的商品是否算作售出(涉及到公式的內容)

❾ python面向對象編程中的f.init()什麼意思,為什麼要加這一個

f.init()加在中間是為了類Filter定義一個屬性blocked並初始化,因為它定義了類的屬性blocked,而類Filter的函數filter中要用到這個屬性,所以不加f.init()會報錯.

同樣的s.init(),SPAMFilter子類重寫了Filter父類的init函數,並且重新定義了屬性blocked,而子類SPAMFilter繼承的父類Filter的函數filter中用到了這個屬性,所以不加s.init()也會報錯.

完整的Python程序如下

class Filter:

def init(self):

self.blocked=[]

def filter(self,sequence):

return [x for x in sequence if x not in self.blocked]

class SPAMFilter(Filter):

def init(self):

self.blocked=['SPAM']

f=Filter()

f.init()

print(f.filter([1,2,3]))

s=SPAMFilter()

s.init()

print(s.filter(['SPAM','SPAM','SPAM','SPAM','eggs','bacon','SPAM']))

源代碼(注意源代碼的縮進)

❿ 一個python編程題目——面向對象的

不一定的,以後每個月越來越多兔子,沒有準確數目

閱讀全文

與python面向對象編程題相關的資料

熱點內容
java自動格式化 瀏覽:617
ipad怎麼查看文件夾大小 瀏覽:581
手工粘土解壓球 瀏覽:550
在線視頻教育源碼 瀏覽:39
快四十學什麼編程 瀏覽:754
gnumakelinux 瀏覽:537
視易峰雲伺服器怎麼改系統 瀏覽:535
javamap取值 瀏覽:768
mac和win磁碟加密軟體 瀏覽:474
蘋果為什麼會連接不到伺服器 瀏覽:726
pdf格式文件如何保存 瀏覽:303
小霸王伺服器tx什麼意思 瀏覽:75
解釋dns命令 瀏覽:584
dmx512怎麼編程 瀏覽:744
北京雲主機17t雲伺服器 瀏覽:232
php伺服器url地址 瀏覽:440
哪裡看書免費app 瀏覽:437
php刪除數組中重復值 瀏覽:786
經理下命令咱都別說話是什麼意思 瀏覽:625
上海風機可編程式控制制器價格 瀏覽:249