Python基礎 物件導向

2021-10-11 20:22:13 字數 4931 閱讀 8019

class

person

: name=

"zhangsan"

#類屬性--這個類所有的例項都是一樣的---共有的

def__init__

(self,inname,inage,inweight)

: self.name=inname

self.age=inage

self.weight=inweight

#例項方法

defeat

(self)

: self.weight+=

2print

("在吃飯!---體重加了2斤",self.weight)

#類方法--類呼叫的---例項呼叫也可以

@classmethod

deftell

(cls)

cls.nickname=

"***"

print

("我是類方法"

)#靜態方法

@staticmethod

defrun()

:print

("---靜態方法---"

)#靜態方法不需要傳入self引數,類成員方法需要傳入代表本類的cls引數;靜態方法是無妨訪問例項變數和類變數的,類成 員方法無法訪問例項變數但是可以訪問類變數,因此靜態方法相當於類作用域裡面的乙個函式。

#建立例項---類名()

p1=person(

'tom',20

,160

)p2=person(

'jack',30

,150

)p1.eat(

)print

(p2.weight)

#1- 老虎類

class

tiger

: nickname =

'老虎'

#如果這個屬性每個例項可以不一樣--例項屬性

def__init__

(self,inweight)

: self.weight = inweight

#叫--判斷該方法是不是與例項有關係--看是否涉及到例項屬性

defroar

(self)

:print

('我是老虎--wow---體重減少5斤!'

) self.weight -=

5#餵食操作

deffeed

(self,food)

:if food ==

'肉':

self.weight +=

10print

('恭喜,餵食正確,體重增加10斤'

)else

: self.weight -=

10print

('抱歉,餵食錯誤,體重減少10斤'

)#1- 羊類

class

sheep

: nickname =

'羊'# __age = 20#私有的

#如果這個屬性每個例項可以不一樣--例項屬性

def__init__

(self,inweight)

: self.weight = inweight

#叫--判斷該方法是不是與例項有關係--看是否涉及到例項屬性

defroar

(self)

:print

('我是羊--mie---體重減少5斤!'

) self.weight -=

5#餵食操作

deffeed

(self,food)

:if food ==

'草':

self.weight +=

10print

('恭喜,餵食正確,體重增加10斤'

)else

: self.weight -=

10print

('抱歉,餵食錯誤,體重減少10斤'

)#1- 房間類

class

room

:#編號、裡面的動物

def__init__

(self,innum,inanimal)

: self.num = innum

self.animal = inanimal

# t1 = tiger(200)

# # print(t1.weight)

# # t1.roar()

# # t1.feed('草')

# # print(t1.weight)

## #建立房間例項

# r1 = room(2,t1)

## #敲門操作

# r1.animal.roar()##

# #餵食操作

# r1.animal.feed('草')

#--------初始化10個房間例項--------

from random import randint

# print(randint(0,1))#0 1

roomlist =

for one in

range(1

,11):

#1- 10

if randint(0,

1)==1

: ani = tiger(

200)

else

: ani = sheep(

100)

room = room(one,ani)

import time

開始時間 = time.time(

)#單位是 s 現在到2023年的乙個秒數

while

true

: 當前時間 = time.time(

)# 單位是 s

if 當前時間-開始時間 >

120:

break

#遊戲的一次完整的邏輯

#華南虎---繼承

class

soutiger

(tiger)

:def

__init__

(self,inweight,inname)

: tiger.__init__(self,inweight)

#super.__init__(self,inweight)

self.name = inname

s1 = soutiger(

200,

'moco'

)print

(s1.nickname,s1.weight,s1.name)

s1.roar(

)print

('-------------------'

)

class

vipcustomer

:#vip

# welfare =

'商品8折優惠+生日禮券'

def__init__

(self,inname,inage)

: self.name = inname

self.age = inage

defshopping

(self)

:print

('-----

)#業務擴充套件---需要公升級svip-----但是要保證vip許可權

class

svipcustomer

(vipcustomer)

: svipwelfare =

'金融理財+白條支付'

def__init__

(self,inname,inage,inlevel)

: vipcustomer.__init__(self,inname,inage)

self.level = inlevel

defshopping

(self)

:print

('-----《江浙滬包郵+福利禮品》-----'

)#--------1.選擇登陸級別----------

userlevel =

input

('vip使用者請求輸入: 1 ;svip使用者請求輸入: 2:'

)if userlevel ==

'1':

name,age =

input()

.split(

',')

vip1 = vipcustomer(name,

int(age.strip())

) vip1.shopping(

)elif userlevel ==

'2':

name,age,level=

input()

.split(

',')

svip1 = svipcustomer(name,

int(age.strip())

,int

(level.strip())

)for one in

range(0

,4):

# 0 1 2 3

if one >2:

#3print

('svip只要3次購物超級福利機會,已使用完畢'

)super

(svipcustomer,svip1)

.shopping(

)#使用父類的 shopping()

#需要呼叫父類的被重寫方法:

# super(子類類名,子類的例項名).方法()

else

: svip1.shopping(

)#子類的shopping()

else

:print

('-----《抱歉暫時沒有這個許可權使用者》-----'

)

python物件導向基礎 python物件導向基礎

面向過程與物件導向 面向過程的程式設計的核心是過程 流水線式思維 過程即解決問題的步驟,面向過程的設計就好比精心設計好的一條流水線,考慮周全什麼時候處理什麼東西。優點 極大降低了寫程式的複雜度,只需要順著要執行的步驟,堆疊 即可。缺點 一套流水線或者流程就是解決乙個問題,牽一髮而動全身。應用場景 一...

Python之物件導向 物件導向基礎

一 面向過程 物件導向對比 1 面向過程 根據業務邏輯從上到下寫壘 2 函式式思想 將某功能 封裝到函式中,日後便無需重複編寫,僅呼叫函式即可 3 物件導向 對函式進行分類和封裝 1 2 3一步一步抽象,函式式是走向物件導向的中間步驟 函式式的應用場景 各個函式之間是獨立且無共用的資料 物件導向程式...

python物件導向基礎

類是例項的模版,例項是根據類建立的乙個具體物件,每個物件都有相同的方法,但是各自的資料不同。如果要讓內部屬性不被外部訪問,可以把屬性的名稱前加上兩個下劃線 在python中,例項的變數名如果以 開頭,就變成了乙個私有變數 private 只有內部可以訪問,外部不能訪問 當子類和父類都存在相同的run...