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

歡迎訪問 生活随笔!

生活随笔

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

python

python学习面向对象_python学习之面向对象学习

發布時間:2025/5/22 python 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python学习面向对象_python学习之面向对象学习 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、什么事面向對象,以及面向對象的優點?

面向過程優缺點:

我們知道面向過程是流水線式的編程,過程就是解決問題的步驟,把大的問題化解成小的模塊

面向過程優點: 極大的降低了程序的復雜度

面向過程缺點: 牽一發而動全身, 所以完成一個模塊很少改動,否則改動的地方比較多

面向對象優缺點:

面向對象編程的核心是對象,由屬性和函數構成

面向對象優點: 解決程序的擴展性,對某個類的修改能反映到整個體系中

類的語法結構:

class 類名:

類體

例子:

class People:

language = ‘Chinese‘

def func(self): #self把對象自身傳進去

pass

p1 = People

p2 = People

print(p1.language)

print(p2.language)

p1.language = ‘english‘

print(p1.language) #輸出english

print(p2.language) #輸出english

注: 所有對象共用類的屬性,所以p2也輸出english

初始化類__init__

例子:

class Garen:

camp=‘Demacia‘

def __init__(self,nickname, aggressivity=58,life_value=456):

self.nickname = nickname

self.aggressivity = aggressivity

self.life_value = life_value

def attack(self,enemy):

enemy.life_value -= self.aggressivity

hero = Garen(‘garen‘, 100, 600) #加括號初始化類對象

print(isinstance(hero, Garen)) #isinstance判斷hero是否是類Garen的實例,是則返回True,否則返回False

print(Garen.__name__) #類的名稱

print(Garen.__doc__) #類的文檔字符串

print(Garen.__base__) #類的第一個父類

print(Garen.__bases__) #類的所有父類構成的元組

print(Garen.__dict__) #類的字典屬性

print(Garen.__module__) #類定義所在的模塊

print(Garen.__class__) #實例對應的類

將函數綁定到對象上叫做對象的方法,并且會把自身傳遞給函數作為第一個參數

對象的交互:

class Riven:

camp = ‘Noxus‘

def __init__(self, nickname, aggressivity=54,life_value=300):

self.nickname = nickname

self.aggressivity = aggressivity

self.life_value = life_value

def attack(self,enemy):

enemy.life_value -= self.aggressivity

r1 = Riven(‘瑞問問‘)

print(hero.life_value)

r1.attack(hero)

print(hero.life_value)

print(id(r1.attack)) #id打印函數位置

print(id(Riven.attack))

類有兩種屬性:數據屬性和函數屬性,數據屬性共享給所有對象。

方法是綁定到所有對象上的,并且對象會傳遞給函數

創建對象就是創建了一個命名空間,對象會先找自己的命名空間,再找類的命名空間

二、繼承

繼承是一種創建新類的方式

繼承的好處,減少代碼冗余,

子類覆蓋父類的方法叫做派生

例子:

class ParentClass1:

pass

class ParentClass2:

pass

class SubClass1(ParentClass1):

pass

class SubClass2(ParentClass1,ParentClass2):

pass

print(SubClass1.__bases__) #打印父類

print(SubClass2.__bases__) #打印父類

繼承關系如圖:

F->A->E-B->D->C

F->D->B-E->C->H->A派生類

例子:

class Animal:

def __init__(self,name,age,sex):

self.name = name

self.age = age

self.sex = sex

def eat(self):

print(‘eating‘)

def talk(self):

print(‘%s 正在叫‘ %self.name)

class People(Animal):

def __init__(self,name,age,sex,education):

Animal.__init__(self,name,age,sex)

self.education = education

def talk(self):

Animal.talk(self)

print(‘%s say hello‘ %self.name)

class Pig(Animal):

pass

class Dog(Animal):

pass

peo1 = People(‘hyh‘,20,‘male‘,‘小學畢業‘)

pig1 = Pig(‘zhangsan‘, 16, ‘male‘)

dog1 = Dog(‘lisi‘, 16, ‘female‘)

peo1.talk()

pig1.talk()

dog1.talk()

print(isinstance(peo1, People)) #判斷peo1是否是People類,返回True或False

print(isinstance(pig1, Pig)) #繼承反映的什么是什么的關系

print(isinstance(dog1, Dog))

通過__dict__獲取屬性

class Sub:

def __init__(self):

self.bar = 123

def bar(self):

print(‘Sub.bar‘)

s = Sub()

print(s.__dict__)

print(s.__dict__[‘bar‘])

組合: 在一個類中,以另外一個類的對象作為數據屬性,稱為類的組合,組合反映的是什么有什么的關系,

例子:

class People:

def __init__(self,name,age,sex):

self.name=name

self.age=age

self.sex=sex

class Date:

def __init__(self,year,mon,day):

self.year = year

self.mon = mon

self.day = day

def tell(self):

print(‘%s-%s-%s‘ %(self.year,self.mon,self.day))

class Teacher(People):

def __init__(self,name,age,sex,salary,year,mon,day):

self.name = name

self.age = age

self.sex = sex

self.salary = salary

self.birth = Date(year,mon,day)

class Student(People):

def __init__(self,name,age,sex,year,mon,day):

self.name=name

self.age=age

self.sex=sex

self.birth=Date(year,mon,day)

t=Teacher(‘egon‘,18,‘male‘,3000,1995,12,31)

t.birth.tell()

定義類模擬接口

例子:

class File:

def read(self):

raise TypeError(‘類型錯誤‘)

def write(self):

raise TypeError(‘類型錯誤‘)

class Txt(File):

def read(self):

print(‘文本數據的讀取方法‘)

def write(self):

print(‘文本數據的讀取方法‘)

class Sata(File):

def read(self):

print(‘硬盤數據的讀取方法‘)

def wirte(self):

print(‘硬盤數據的讀取方法‘)

class Process(File):

def read(self):

print(‘進程數據的讀取方法‘)

def write(self):

print(‘進程數據的讀取方法‘)

p = Process()

p.read()

t = Txt()

d = Sata()

print(isinstance(p, Process))

print(isinstance(t, Txt))

print(isinstance(d, Sata))

注: File類定義功能函數,Txt,Sata,Process分別定義實現函數的方法

調用父類用super方法

例子:

class Foo1:

def test(self):

print("from foo1.test")

class Foo2:

def test(self):

print(‘from foo2.test‘)

class Bar(Foo1,Foo2):

def test(self):

super().test()

print(‘Bar‘)

b = Bar()

b.test()三、封裝封裝:主要為了保護數據的隱私,而把數據隱藏起來,只能通過接口去訪問

類中通過__雙下劃線來隱藏數據屬性和函數屬性,含有__x的屬性都會變成_類名__x的形式:Foo:

__x = __test(): ()

(Foo.)封裝實例:

class People:

__country = ‘China‘

def __init__(self,name,age,sex):

self.__name = name

#self._People__name = name

self.__age = age

self.__sex = sex

def tell_info(self):

print(‘人的名字是:%s, 人的年齡是: %s, 人的性別是: %s‘ %(self.__name, self.__age, self.__sex))

p = People(‘alex‘, 29, ‘male‘)

print(p.__dict__)

p.tell_info()

注: 封裝只在定義時檢查語法

p.__x = 1

print(p.__x) #打印1

修改屬性接口

class People:

def __init__(self,name,age):

self.__name = name

self.__age = age

def tell_info(self):

print(‘人的名字是: %s, 人的年齡是: %s‘ %(self.__name, self.__age))

def set_info(self,x, y):

if not isinstance(x, str):

raise TypeError(‘名字必須是字符串‘)

if not isinstance(y, int):

raise TypeError(‘年齡必須是整數‘)

self.__name = x

self.__age = y

p = People(‘alex‘, 20)

p.tell_info()

p.set_info(‘hyh‘, 18)

p.tell_info()

四、類裝飾器

原文:http://haoyonghui.blog.51cto.com/4278020/1934677

總結

以上是生活随笔為你收集整理的python学习面向对象_python学习之面向对象学习的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 奇米影视亚洲春色 | 自拍偷拍亚洲区 | 日日操日日 | www.呦呦| 中文字幕在线日本 | 婷婷精品一区二区三区 | 亚洲av熟女国产一区二区性色 | 日本久操| 欧美色图亚洲色 | 黄色三级三级三级三级 | 六月婷婷在线 | 中国av免费看 | 国产无码精品合集 | 国产精品一区二区免费看 | 国产精品无码无卡无需播放器 | 欧美另类激情 | 婷婷激情丁香 | 朝桐光av在线一区二区三区 | www.天天操| 欧美日韩国产精品成人 | 久久久久久不卡 | 久久丫精品 | 桃色一区二区 | 在线看日韩 | 亚洲福利网站 | www.777色 | 超碰在线进入 | 国产在线视频你懂得 | 中文字幕亚洲乱码熟女1区2区 | 国产精品igao视频 | 哪里可以免费看毛片 | 高柳家在线观看 | 国产古装艳史毛片hd | 国产精品白虎 | 欧美综合一区二区三区 | 日韩中文字幕在线 | 婷婷射图| 国产一区二区三区在线视频 | 亚洲激情免费视频 | 99精品免费视频 | 亚洲国产精品久久 | 五十路中文字幕 | 香蕉视频ap| 性感美女高潮 | 日韩一级片网址 | 午夜精品久久久久久久久久 | 亚洲性欧美色 | 久久99九九 | 在线免费精品视频 | 国产成人精品999在线观看 | 久久久久1 | 新版红楼梦在线高清免费观看 | 精品亚洲中文字幕 | 成人激情视频在线观看 | 亚洲福利视频网 | 99er久久| 一级少妇毛片 | 永久免费未满蜜桃 | 伦hdwww日本bbw另类 | 欧美日韩一区二区视频观看 | 日韩一区二区三区电影 | 饥渴少妇色诱水电工 | 韩国美女av | 91人人视频 | 中文字幕成人av | 91精品国产亚洲 | 原来神马电影免费高清完整版动漫 | 精品一区在线视频 | 蜜臀av一区二区三区 | 久草中文网| 中文字幕一区二区三区四区五区 | 波多野吉衣毛片 | 欧美中文字幕一区 | 男人用嘴添女人下身免费视频 | 禁网站在线观看免费视频 | 99视频国产精品 | 波多野结衣三级视频 | 日韩亚洲精品中文字幕 | 超碰九七 | 国产精品成av人在线视午夜片 | 国产精品成人在线观看 | 亚洲一区二区三区网站 | 国产精品网站在线观看 | 日本黄在线观看 | 亚洲精品色午夜无码专区日韩 | 亚洲精品美女 | 色噜噜狠狠成人中文 | 国产 日韩 欧美在线 | 性中文字幕 | 国产盗摄一区二区三区 | 午夜爱爱免费视频 | 情欲少妇人妻100篇 黄色一级片欧美 | 欧美手机在线视频 | 成人精品免费视频 | 全部免费毛片 | 欧美成人精品三级网站 | 国产一区二区三区免费观看 | 日韩欧美国产另类 | 九九九国产|