面向對象接口,面向對象及os模塊、socket模塊

 2023-11-19 阅读 28 评论 0

摘要:1.面向對象及面向過程 1)面向過程:核心過程二字,過程即解決問題的步驟,就是先干什么后干什么 基于該思想寫程序就好比在這是一條流水線,是一種機械式的思維方式 優點:復雜的過程流程化 缺點:擴展性差 2)面向對象

1.面向對象及面向過程

1)面向過程:核心過程二字,過程即解決問題的步驟,就是先干什么后干什么

基于該思想寫程序就好比在這是一條流水線,是一種機械式的思維方式

優點:復雜的過程流程化

缺點:擴展性差

2)面向對象:核心是對象二字,對象指特征與技能的結合體

基于該思想編寫程序就好比在創造一個世界,世界是由一個個對象組成,是一種‘上帝式’的思維方式

優點:可擴展性強

缺點:變成復雜度高,極容易出現過度設計的問題

?

3)類:對象是特征與技能的結合體,類就是一系列對象相似的特征與技能的結合體

在現實生活中:一定是先有一個個具體的對象,后總結出類

在程序中:一定是先定義類,后產生對象

?

2.駝峰式命名法

class Students:

??? school = '薪享宏福'

??? def __init__(self,name, age):#初始化函數(區分不同對象的函數)

??????? self.name = name

??????? self.age = age

??????? #代表誰調用self,self就是誰

??????? #stu1.name = name

??????? #stu1.age = age

??? def run(self):

??????? print('%s is running......' % self.name)

??? def __str__(self):

??????? # 當打印實例化出來的對象的時候,會打印出__str__返回的值

??????? return '實例化? %s' % self.name

面向對象接口。?

stu1 = Students('li',88)

print(stu1.name)

print(stu1.age)

stu1.run()

print(stu1)

?

stu2 = Students('zhao',77)

print(stu2.name)

print(stu2.age)

stu1.run()

print(stu2)

?

輸出結果:

li

88

li is running......

實例化? li

zhao

77

li is running......

實例化? zhao

3.封裝實例

1)小明愛跑步

需求:

1.小明體重75公斤

Python os模塊?2.小明每次跑步都會減肥0.5公斤

3.小明每次吃東西體重會增加1公斤

?

class Human(object):

??? def __init__(self,name,weight):

??????? self.name = name

??????? self.weight = weight

??? def run(self):

??????? self.weight -= 0.5

??? def eat(self):

??????? self.weight += 1

?

??? def __str__(self):

??????? return '%s的體重為%skg' % (self.name,self.weight)

?

xiaoming = Human('小明',75)

xiaoming.eat()

xiaoming.eat()

xiaoming.run()

xiaoming.run()

xiaoming.run()

xiaoming.run()

xiaoming.run()

xiaoming.run()

xiaoming.run()

print(xiaoming)

輸出結果:

小明的體重為73.5kg

?

python3 socket。2)封裝案例2

需求:

1、房子有戶型、總面積、家具名稱列表

  房子沒有任何家具

2、家具有名字和占地面積,其中

  席夢思(bed):4平米

os模塊的方法用來返回、  衣柜(chest): 2平米

  餐桌(table): 1.5平米

3、將以上3個家具添加到房子中

4、打印房子中,要求輸出:戶型、總面積、剩余面積、家具名稱列表

?class Item(object):

??? def __init__(self,name,area):

??????? self.name = name

??????? self.area = area

class House(object):

??? def __init__(self,name,total_area):

??????? self.name = name

??????? self.total_area = total_area

??????? self.free_area = total_area

??????? self.item = []

??? def add_item(self,item):

??????? self.free_area -= item.area

??????? self.item.append(item.name)

??? def __str__(self):

??????? return '戶型:%s? 房子總大小:%s? 剩余面積:%s? 家具列表:%s? ' % (self.name,self.total_area,self.free_area,self.item)

?

bed = Item('床',4)

table = Item('桌子',1.5)

chest = Item('衣柜',2)

house = House('公寓',18)

house.add_item(bed)

house.add_item(table)

house.add_item(chest)

print(house)

輸出結果:

戶型:公寓? 房子總大小:18? 剩余面積:10.5? 家具列表:['床', '桌子', '衣柜']

?

socket、3)士兵突擊

需求:

1.士兵許三多有一把AK47

2.士兵可以開火

3.槍能夠發射子彈

4.槍裝填子彈——增加子彈數量

python常用模塊、?

class Gun(object):

??? def __init__(self,model,bullet):

??????? self.model = model

??????? self.bullet = bullet

??? def add_bullet(self,buller_num):

??????? self.bullet += buller_num

??????? print('裝填完畢')

??????? if self.bullet >= 30:

??????????? self.bullet = 30

??? def shoot(self):

??????? self.bullet -= 1

??????? if self.bullet <= 0:

??????????? print('槍內無子彈,請裝彈')

??????????? self.bullet = 0

??? def __str__(self):

??????? return '%s內還有%s發子彈' % (self.model,self.bullet)

?

class Human(object):

??? def __init__(self,name,gun):

??????? self.name = name

??????? self.gun = gun

??? def fire(self):

??????? self.gun.shoot()

?

?

Ak47 = Gun('Ak47',5)

xusanduo = Human('許三多',Ak47)

xusanduo.fire()

xusanduo.fire()

xusanduo.fire()

xusanduo.fire()

Ak47.add_bullet(30)

print(Ak47)

?

4.繼承

繼承實現代碼的重用,相同的代碼不需要重復編寫,子類可以繼承父類的屬性和方法

os、單繼承,多繼承

class Anamal:

??? def eat(self):

??????? print('吃')

??? def drink(self):

??????? print('喝')

??? def run(self):

??????? print('跑')

??? def sleep(self):

??????? print('睡')

class Dog(Anamal):

??? def bark(self):

??????? print('汪汪叫')

?

class XiaoTianQuan(Dog):

??? def fly(self):

??????? print('我會飛啦!!!!')

dog = XiaoTianQuan()

dog.eat()

dog.run()

dog.sleep()

dog.drink()

dog.bark()

dog.fly()

?

5.方法的重寫與擴展

1)重寫:

子類繼承父類,可以享受父類中已經封裝號的方法,不需要再次開發

當父類的方法不滿足子類需求時,可以對方法進行重寫

2)擴展:

在子類中重寫父類的方法

在需要的位置使用super().父類方法來調用父類方法的執行

?

6.多態

python中的socket模塊。不同的子類對象調用相同的父類方法時,產生不同的結果

多態可以增加代碼的靈活度

class Animal(object):

??? def __init__(self,name):

??????? self.name = name

??? def eat(self):

??????? print('吃.....')

??? def drink(self):

??????? print('喝.....')

??? def run(self):

??????? print('跑.....')

??? def sleep(self):

??????? print('睡.....')

??? def play(self):

??????? pass

?

class Dog(Animal):

??? def play(self):

??????? print('%s開開心心去玩耍......' % self.name)

?

class XiaoTianQuan(Animal):

??? def play(self):

??????? print('%s飛到天上去玩耍.....' % self.name)

?

?

class Person(object):

??? def __init__(self,name):

??????? self.name = name

python telnet模塊、?

??? def with_game(self, part):

??????? print('%s 與 %s 一起去玩耍.....' % (self.name,part.name))

??????? part.play()

?

dog = Dog('旺財')

xiaotianquan = XiaoTianQuan('飛天旺財')

xiaoming = Person('小明')

xiaoming.with_game(xiaotianquan)

?

7.異常處理

1)什么是異常?

異常即是一個事件,該事件會在程序執行過程中發生,影響了程序的正常執行。

一般情況下,在Python無法正常處理程序時就會發生一個異常。

異常是Python對象,表示一個錯誤。

當Python腳本發生異常時我們需要捕獲處理它,否則程序會終止執行。

?

2)異常處理:

捕捉異常可以使用try/except語句。

try/except語句用來檢測try語句塊中的錯誤,從而讓except語句捕獲異常信息并處理。

如果你不想在異常發生時結束你的程序,只需在try里捕獲它。

try:

??? 正常的操作

?? ......................

except:

??? 發生異常,執行這塊代碼

?? ......................

else:

??? 如果沒有異常執行這塊代碼

UR5socket模塊??

try:

<語句>

finally:

<語句>??? #退出try時總會執行

raise

?

try:

??? fh = open("testfile", "w")

??? fh.write("這是一個測試文件,用于測試異常!!")

finally:

??? print("Error: 沒有找到文件或讀取文件失敗")

?

3)用戶自定義異常

class O_ERROR(Exception):

??? def __init__(self, info):

??????? self.info = info

?

def ad(age):

??? if age == 100:

??????? raise O_ERROR('年紀不能等于100')

?

try:

??? ad(100)

except O_ERROR as e:

??? print(e)

輸出結果:

年紀不能等于100

python之OS模塊詳解、?

8.os模塊

os.getcwd() 獲取當前工作路徑

os.chdir() 改變當前工作路徑

os.makedirs() 創建遞歸目錄

os.mkdir()創建單級目錄

os.rmdir() 刪除空目錄

os.listdir() 列出指定目錄下的文件和文件夾,包括隱藏文件,以列表方式打印出來

os.remove()刪除文件或文件夾

os.rename()重命名

os.stat()查看一個文件的詳細信息

os.path.exits()判斷路徑是否存在

os.path.isfile()判斷文件是否存在

os.path.isdir()判斷文件夾是否存在

os.path.join()路徑拼接

?

9.socket模塊

檢查主機、端口是否正常工作

import socket

hosts = ['192.168.254.10:22','192.168.100.100:3306','192.168.200.200:25']

server = socket.socket()#tcp協議

server.settimeout(1)

for host in hosts:

??? ip = host.split(':')[0]

??? port = host.split(':')[1]

??? status_code = server.connect_ex((ip,int(port)))

??? # print('%s:%s is %s' % (ip,port,status_code))

??? if status_code != 0:

??????? pass

?

轉載于:https://www.cnblogs.com/Agnostida-Trilobita/p/11066225.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/4/181308.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息