日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python封装的好处_Python之浅谈多态和封装

發布時間:2025/4/16 python 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python封装的好处_Python之浅谈多态和封装 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

組合

什么是組合

對象的某個屬性是另一個類的對象

為什么使用組合

可以減少代碼冗余

class Person:

school = 'oldboy'

class Teacher(Person):

def __init__(self,name,age,level,course):

self.name=name

self.age=age

self.level=level

#course是課程對象,表示老師教授的課程

self.course=course

class Student(Person):

# course=[] #錯誤

def __init__(self,name,age):

self.name=name

self.age=age

# course是課程對象,表示學生選的課程

self.course_list = []

def choose_course(self,course):

# self.course=[] #錯誤

#把課程對象追加到學生選課的列表中

self.course_list.append(course)

def tell_all_course(self):

#循環學生選課列表,每次拿出一個課程對象

for course in self.course_list:

#課程對象.name 取到課程名字

print(course.name)

class Course:

def __init__(self,course_name,course_price,course_period):

self.name=course_name

self.price=course_price

self.period=course_period

course=Course('Python',20199,7)

stu1=Student('nick',19)

stu1.choose_course(course)

stu2=Student('王二丫',19)

stu2.choose_course(course)

stu2.choose_course(Course('linux',19999,5))

組合可以理解成多個人去造一個機器人,有的人造頭、有的人造腳、有的人造手、有的人造軀干,大家都完工后,造軀干的人把頭、腳、手拼接到自己的軀干上,因此一個機器人便造出來了

多態和多態性

多態

什么是多態?

一類事物的多種形態

比如:動物類:豬,狗,人

多態性

? 多態性是指在不考慮實例類型的情況下使用實例

好處

? 1.增加了程序的靈活性

? 2.增加了程序額可擴展性

多態性

什么是多態性

指在不考慮實例類型的情況下使用實例

約束代碼

第一種方式:用abc實現接口統一化,約束代碼(用的比較少)

import abc

#第一在括號中寫metaclass=abc.ABCMeta

class Animal(metaclass=abc.ABCMeta):

#第二在要約束的方法上,寫abc.abstractmethod裝飾器

@abc.abstractmethod

def speak(self):

pass

第二種方式,用異常處理來實現(常用)

class Animal():

def speak(self):

#主動拋出異常

raise Exception('你得給我重寫它啊')

崇尚鴨子類型:只要走路像鴨子(對象中有某個綁定方法),那你就是鴨子

封裝

封裝是什么意思?

? 從封裝本身的意思去理解,封裝就好像是拿來一個麻袋,把小貓,小狗,小王八,一起裝進麻袋,然后把麻袋封上口子

隱藏

把東西包裝進去之后,隱藏起來,外部訪問不到

如何用代碼實現隱藏

隱藏屬性/隱藏方法 隱藏之后,外部訪問不到,只有內部能夠訪問

隱藏屬性:通過 __變量名來隱藏

隱藏方法:通過 __方法名來隱藏

python 實際上是可以訪問隱藏屬性的

class Person:

def __init__(self,name,age):

self.__name=name

self.__age=age

def get_name(self):

# print(self.__name)

return '[----%s-----]'%self.__name

p=Person('nick',89)

print(p._Person__name)

print(p.__dict__)

#通過變形隱藏了屬性

隱藏方法

隔離復雜度

什么時候屬性變形

只要再類內部,以__變量名 命名的變量,都會被隱藏,會發生的變形,在外部放入的 __變量名 屬性是不隱藏的

#計算人的bmi指數

#property裝飾器:把方法包裝成數據屬性

class Person:

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

self.name=name

self.height=height

self.weight=weight

@property

def bmi(self):

return self.weight/(self.height**2)

#property之setter和deleter:可以將包裝后的數據進行更改

class Person:

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

self.__name=name

self.__height=height

self.__weight=weight

@property

def name(self):

return '[我的名字是:%s]'%self.__name

#用property裝飾的方法名.setter

@name.setter

def name(self,new_name):

# if not isinstance(new_name,str):

if type(new_name) is not str:

raise Exception('改不了')

if new_name.startswith('sb'):

raise Exception('不能以sb開頭')

self.__name=new_name

# 用property裝飾的方法名.deleter

@name.deleter

def name(self):

# raise Exception('不能刪')

print('刪除成功')

# del self.__name

p=Person('lqz',1.82,70)

print(p.name)

p.name='pppp'

p.name='xxx'

#改不了,直接拋一異常

p.name=999

p.name='sb_nick'

print(p.name)

del p.name

print(p.name)

總結

以上是生活随笔為你收集整理的python封装的好处_Python之浅谈多态和封装的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。