抽象類 模組的簡單應用

2021-09-02 10:11:52 字數 2915 閱讀 8847

# -*- coding: utf-8 -*-

from abc import abc ,abstractmethod

from collections import namedtuple

# 為什麼要用抽象類呢   抽象類解決有些基類不能實現方法,如水果不可以有吃的方法,但是子類如蘋果可以有吃的方法,

#  抽象類的方法什麼都不用做,但是子類必須實現抽象類裡面的所有方法才可以合法例項化

#理解有限,大家多多指教  

customer = namedtuple(

'customer'

,'name,fidelity'

)#customer 可以看成是類名,後面的是類的兩個屬性.

class

lineitem

:'''獲取總購物價值'''

def__init__

(self,product,quantity,price)

: self.product =product

self.quantity =quantity

self.price = price

deftotal

(self)

:return self.price *self.quantity

class

order

:def

__init__

(self,customer,cart ,promotion=

none):

self.customer =customer

self .cart =

list

(cart)

self .promotion =promotion

deftotal

(self):if

nothasattr

(self,

'__total'):

#判斷類的屬性中是否包含__total

self.__total =

sum(item.total(

)for item in self.cart)

return self.__total

defdue(self)

:if self.promotion is

none

: discount =

0else

: discount =self.promotion.discount(self)

return self.total(

)-discount

def__repr__

(self)

: fmt =

''return fmt.

format

(self.total(

),self.due())

class

promotion

(abc)

: @abstractmethod

defdiscount

(self,order)

:'''返回折扣的正值'''

class

fidelitypromo

(promotion)

:def

discount

(self,order)

:return order.total()*

0.05

if order.customer.fidelity>=

1000

else

0class

bulkitempromo

(promotion)

:def

discount

(self,order)

: discount=

0for item in order.cart:

if item.quantity>=20:

discount+=item.total()*

0.1return discount

class

largeorderpromo

(promotion)

:def

discount

(self,order)

: distinct_items =

iflen

(distinct_items)

>=10:

return order.total()*

0.07

return

0joe=customer(

'john deo',0

)ann=customer(

'ann'

,1100

)cart =

[lineitem(

'banana',4

,.5),

lineitem(,10

,1.5),

lineitem(

'water',5

,5.0)]

print

(cart)

print

(order(joe,cart,fidelitypromo())

)print

(order(ann,cart,fidelitypromo())

)[<__main__.lineitem object at 0x7f5471d90048

>

,<__main__.lineitem object at 0x7f5471d90080

>

,<__main__.lineitem object at 0x7f5471d900b8

>

]42.00 due :

42.00

>

42.00 due :

39.90

>

php抽象類的簡單應用

抽象類也是物件導向中的重要概念,和介面 繼承的概念重要性相當,在物件導向的開發中,所有的物件都是通過類來描述的,但是反過來,並不是所有類都是用來描繪物件的,廣義上講如果乙個類中沒有足夠資訊來描述乙個具體的物件,這樣的類就是抽象類。具體用簡單的 來實現 1 abstract class acaneat...

抽象類的應用

新建乙個抽象類 abstract class person 自動生成get和set方法 public int getage public void setage int age public string getname public void setname string name 建立抽象函式 ...

java 抽象類應用

本例子通過乙個例項來具體闡述抽象類的應用,首先乙個抽象類person2,裡面定義了一些人的共有屬性 年齡,姓名 和抽象方法want want 方法來具體實現不同的人的需求 學生想要成績,工人想要工資 接下來student類和worker類繼承person類,並且實現自己想要的want 但是人的共有屬...