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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

day31 Pyhton 面向对象的基础 三大特性

發(fā)布時(shí)間:2024/7/5 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 day31 Pyhton 面向对象的基础 三大特性 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一.內(nèi)容回顧

封裝

  1.概念 筆記

  2.__名字 在類的外部就不能用了

  3.私有化的 不能被子類繼承,也不能在其他任何類中調(diào)用

三個(gè)裝飾器方法(裝飾類中的方法)

  1.不被修飾的? 普通方法,會使用對象self的屬性

  2.@classmethod? 類方法,不使用self的屬性,用類cls的屬性

  3.@staticmethod 靜態(tài)方法,不用self的屬性和類cls的屬性

  4.@property? 將一個(gè)方法偽裝成一個(gè)屬性

    def? 函數(shù)名

    @函數(shù)名.setter

    @函數(shù)名.deleter

# from math import pi # class Circle: # def __init__(self,r): # self.r = r # @property # def area(self): # return pi*self.r**2 # @property # def perimeter(self): # 周長 # return 2*pi*self.r # @perimeter.setter # def perimeter(self,新的周長): # self.r = 新的周長 / 2 / pi

setter修改屬性值

# setter裝飾的函數(shù)名叫什么 perimeter
# 那么在這個(gè)函數(shù)中絕對不可以對這個(gè)函數(shù)名同名的屬性進(jìn)行修改
# 程序的邏輯問題# 1. 不可以對某些計(jì)算結(jié)果直接賦值# 2. 一般是通過對計(jì)算結(jié)果產(chǎn)生影響的屬性進(jìn)行重新賦值# 比如說對于圓這個(gè)例子 : 不能直接修改面積或者周長,應(yīng)該通過修改半徑來帶動對應(yīng)周長和面積的改變 # 反射(不得不用) # 使用字符串的方式,操作對象的屬性(對象屬性,類的動態(tài)屬性(方法)) # 在python中 一切皆對象(類也是對象,對象也是對象,模塊也是對象) # a.b # a就是一個(gè)對象 # b本質(zhì)上是一個(gè)變量名,也可以說是a的一個(gè)屬性 # 如果b是b 那么就用a.b # 如果b是'b' 那么就用getattr(a,'b')

二.面向?qū)ο蟮幕A(chǔ)
三大特性

  基礎(chǔ)的繼承

  基礎(chǔ)的封裝 __私有

兩個(gè)內(nèi)置函數(shù):issubclass? isinstance

反射: setattr/delattr? 了解

內(nèi)置方法: 你沒有應(yīng)用場景

__new__

__call__

__str__/__repr__

__len__

__***item__系列

__hash__

__eq__

issubclass(子類,父類),如果真的有繼承關(guān)系,就返回True

class A(object):pass class B(A):pass print(issubclass(B,A)) # isinstance(對象,類) # class A(object):pass # a = A() # print(isinstance(a,A)) # # 繼承 # class A(object):pass # class B(A):pass # b = B() # print(isinstance(b,A)) # 檢測的對象是不是某個(gè)類以及其父類的對象 # print(type(b) is B) # 檢測的是對象是不是某一個(gè)類的實(shí)例 # print(type(b) is A) 所有的反射 都是用字符串 操作對象的屬性 class A:def __init__(self,name,age):self.name = nameself.age = agea = A('alex',83) # hasattr # print(getattr(a,'name'))#alex # a.sex = '不詳' # setattr(a,'sex','不詳') # print(a.sex)#不詳 del a.age # delattr(a,'age') print(a.__dict__)#{'name': 'alex', 'sex': '不詳'} # 關(guān)于內(nèi)置方法的名字# 內(nèi)置方法 雙下方法 魔術(shù)方法 # 內(nèi)置方法的特點(diǎn)# 一定有某一個(gè)語法或者一種寫法自動觸發(fā)這個(gè)方法 # 重點(diǎn)掌握的# 哪些寫法 觸發(fā) 對應(yīng)的內(nèi)置方法# 實(shí)例化 __new__\__init__ 構(gòu)造方法(單例模式)\初始化方法# 對象() __call__# del 對象 __del__ 析構(gòu)方法\對象刪除之前的收尾工作# print(對象) __str__ 讓一個(gè)對象的顯示更加清晰# str(對象)# '%s'%對象# repr() __repr__ 是__str__的備胎,并且還和repr(),%r格式化有關(guān)系# '%r'%對象# len(對象) __len__# 對象[參數(shù)] item系列# == __eq__ __call__ 對象用call方法可以調(diào)用函數(shù)__call__里的方法 # __call__ class Student():def __init__(self,name,age):self.name = nameself.age = agedef call(self):passdef __call__(self, *args, **kwargs):print('調(diào)用我啦') alex = Student('alex',83) # callable #查看某個(gè)變量能否被調(diào)用 # callable(變量) #返回True,那么 變量() --> 調(diào)用 print(callable(Student))#True print(callable(alex))#True # alex() alex.call()#調(diào)用我啦 class Dog(object):def __new__(cls, *args, **kwargs):passdog_obj = object.__new__(cls)#調(diào)用父類object的__new__內(nèi)置方法dog_obj = super().__new__(cls)##調(diào)用父類object的__new__內(nèi)置方法,第二種方法return dog_objdef __init__(self,name,age):self.name = nameself.age = agewc = Dog('旺財(cái)',2) print(wc.name) # 一個(gè)類 只能實(shí)例化一次的方法 class Teacher:flag = Nonedef __new__(cls, *args, **kwargs):if cls.flag is None:cls.flag = object.__new__(cls) # 這一句話只能走一次return cls.flagdef __init__(self,name):self.name = namealex1 = Teacher('alex') alex2 = Teacher('alex') yuan = Teacher('yuan') print(alex2.name)#yuan print(yuan.name)#yuan __del__ # 析構(gòu)方法(了解) 刪除 class Teacher:def __init__(self,name):self.name = namedef __del__(self):print('執(zhí)行我啦')alex = Teacher('ALEX') del alex print('hahaha') # del alex # 執(zhí)行del 對象的時(shí)候 觸發(fā)__del__,在真正的刪除alex對象之前,執(zhí)行的方法__del__ # 如果我們自己不刪除alex,那么在程序的執(zhí)行過程中或者最后,垃圾回收機(jī)制會替你執(zhí)行del alex # 1.del alex # 2.執(zhí)行__del__ # 3.刪除alex class File(object):def __init__(self,file_name):self.f = open('file_name')def read(self):self.f.read(1024)def __del__(self):# 對象使用的一些操作系統(tǒng)的資源的歸還工作/收尾工作self.f.close() __str__ class Course:def __init__(self,name,price,period,teacher):self.name = nameself.price = priceself.period = periodself.teacher = teacherdef __str__(self): # 必須有返回值,必須返回一個(gè)str類型return '%s,%s,%s,%s'%(self.name,self.price,self.period,self.teacher) course_lst = [] python = Course('python',19800,'6 months','baoyuan') linux = Course('linux',16800,'5 months','oldboy') print(python) print(str(python)) print('課程展示 : %s'%python) class Course:def __init__(self,name,price,period,teacher):self.name = nameself.price = priceself.period = periodself.teacher = teacherdef __str__(self): # 必須有返回值,必須返回一個(gè)str類型return '%s,%s,%s,%s'%(self.name,self.price,self.period,self.teacher) course_lst = [] python = Course('python',19800,'6 months','baoyuan') linux = Course('linux',16800,'5 months','oldboy') print(python) print(str(python)) print('課程展示 : %s'%python) # list.__str__() l = [1,2,3,4] # 對象 列表的對象 print(l) print('[%s,%s,%s]'%(l[0],l[1],l[2])) __repr__ 是str方法的備胎(有str調(diào)用str,沒有str走repr) class Course:def __init__(self,name,price,period,teacher):self.name = nameself.price = priceself.period = periodself.teacher = teacherdef __repr__(self): # 必須有返回值,必須返回一個(gè)str類型return 'repr --> : %s,%s,%s,%s'%(self.name,self.price,self.period,self.teacher)def __str__(self): # 必須有返回值,必須返回一個(gè)str類型return 'str --> : %s,%s,%s,%s'%(self.name,self.price,self.period,self.teacher)python = Course('python',19800,'6 months','baoyuan') linux = Course('linux',16800,'5 months','oldboy') print(python) print(linux) class Course:def __init__(self,name,price,period,teacher):self.name = nameself.price = priceself.period = periodself.teacher = teacherdef __repr__(self): # 必須有返回值,必須返回一個(gè)str類型return 'repr --> : %s,%s,%s,%s'%(self.name,self.price,self.period,self.teacher)def __str__(self): # 必須有返回值,必須返回一個(gè)str類型return 'str --> : %s,%s,%s,%s'%(self.name,self.price,self.period,self.teacher) python = Course('python',19800,'6 months','baoyuan') linux = Course('linux',16800,'5 months','oldboy') print('%r'%python)#repr --> : python,19800,6 months,baoyuan print('%s'%python)#str --> : python,19800,6 months,baoyuan print(str(python))#str --> : python,19800,6 months,baoyuan print(repr(python))#repr --> : python,19800,6 months,baoyuan # 流暢的python : repr和str 如果只能寫一個(gè)的 寫repr class Course:def __init__(self,name,price,period,teacher):self.name = nameself.price = priceself.period = periodself.teacher = teacherdef __len__(self):return len(self.__dict__)def __getitem__(self,item):return self.__dict__[item]def __setitem__(self, key, value):self.__dict__[key] = valuedef __delitem__(self, key):self.__dict__.pop(key) python = Course('python',19800,'6 months','baoyuan') print(len(python)) print(python.name) print(python['name']) # ==> 調(diào)用getitem print(python['price']) # ==> 調(diào)用getitem python['name'] = 'python2.0' print(python.name) # del python.name#與下一句功能一樣 del python['name'] print(python.__dict__)#{'price': 19800, 'period': '6 months', 'teacher': 'baoyuan'} # 有一些內(nèi)置的函數(shù)/模塊 要想能正確的使用它們 那么必須按照它規(guī)定的語法來實(shí)現(xiàn) __len__ 測量對象長度 class Ruler:def __init__(self,price,length,jingdu):self.length = lengthself.price = priceself.jingdu = jingdudef __len__(self):return self.length stu_ruler = Ruler(2.5,15,0.1) print(len(stu_ruler))#15 __eq__ s1==s2 等于 s1.__eq__(s2) class Student():def __init__(self,name,age):self.name = nameself.age = agedef __eq__(self, other):if self.name == other.name and self.age == other.age:return Truereturn Falses1 = Student('賈衛(wèi)東',20) s2 = Student('賈衛(wèi)東',20) print(s1 == s2) # s1.__eq__(s2)#True print(s1 is s2) # s1.__eq__(s2)#False #夠通過這個(gè)字符串 --> 程序中的變量名(類名\函數(shù)名\變量名\方法名\對象名) class Manager:pass class Student:pass class Teacher:pass identify = 'Student' print(eval(identify)())#<__main__.Student object at 0x00000000025657B8>

反射 hasattr getattr

class Person:role = '人類'Country = '中國'attr = input('>>>') # role 人類 # # Country 中國 print(getattr(Person,'role')) print(getattr(Person,'Country')) if hasattr(Person,attr):print(getattr(Person,attr))if attr == 'role':print(Person.role) elif attr == 'Country':print(Person.Country) class Person:role = '人類'@staticmethoddef show_courses():print('所有課程') # 反射類中的方法 # class Person: # role = '人類' # @staticmethod # def show_courses(): # print('所有課程') # Person.role == getattr(Person,'role') # Person.show_courses() == getattr(Person,'show_courses')() # ret = getattr(Person,'show_courses') # ret() # 有一個(gè)類,有很多靜態(tài)屬性,也有很多靜態(tài)方法/類方法 # 用戶輸入input任意的屬性名或者方法名, # 如果是屬性 直接打印 - 用到一個(gè)內(nèi)置函數(shù)#getattr(Person,'role') # 如果是方法 直接調(diào)用 - 用到一個(gè)內(nèi)置函數(shù)#getattr(Person,'show_courses') # 要求程序不報(bào)錯(cuò)

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/pythonz/p/10029336.html

總結(jié)

以上是生活随笔為你收集整理的day31 Pyhton 面向对象的基础 三大特性的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美激情va永久在线播放 | 98av视频| 黄色免费大片 | 999zyz玖玖资源站永久 | 日本一区三区 | 久久99草| 成人免费毛片免费 | 欧美国产片| 公交上高潮的丁芷晴 | 久久亚洲综合色图 | 波多野结衣久久 | 九九精品在线视频 | 久久99中文字幕 | 狠狠撸在线视频 | 国产精品午夜福利视频234区 | 天干夜天干天天天爽视频 | 男女午夜视频 | 国产精久久一区二区三区 | 欧美 日韩 国产 激情 | 97神马影院 | 黄色小视频在线播放 | 亚洲欧洲日本在线 | 中国无码人妻丰满熟妇啪啪软件 | 欧美性猛交xxxx乱大交退制版 | 亚洲毛片一区二区三区 | 亚洲av无码一区二区三区在线播放 | h视频在线免费观看 | 亚洲色网址 | 国模av在线| 日韩视频精品在线 | 欧美午夜精品一区二区蜜桃 | 在线播放黄色av | 色中色综合 | 波多野结衣乳巨码无在线观看 | 在线看的免费网站 | 乱中年女人伦 | 欧美揉bbbbb揉bbbbb | 一区在线视频 | 欧美丰满老妇性猛交 | 亚洲最色网站 | 黄色特级大片 | 舔花蒂 | 性一交一乱一区二区洋洋av | 免费成人蒂法网站 | 国产黄| www.久久久久久 | 国产老熟女一区二区三区 | 国产黄色三级网站 | 色噜噜狠狠狠综合曰曰曰 | jizz性欧美17 | 69精品无码成人久久久久久 | 成人免费福利 | 久久精品国产亚洲AV高清综合 | 日一日射一射 | 亚洲最黄网站 | 肉色丝袜脚交一区二区 | 聚色屋| 亚洲天堂欧美在线 | 日本久久久网站 | 另类第一页 | 日韩成人午夜 | 又黄又免费的网站 | aaaaa级片| 午夜福利电影一区二区 | av丁香 | 中日韩中文字幕 | 国产中文字幕乱人伦在线观看 | 神马午夜久久 | 久久久极品 | 奇米在线观看 | 97精品人妻麻豆一区二区 | 国产欧美日韩精品区一区二污污污 | wwwwww色| 奇米狠狠干 | 国产成a人亚洲精v品无码 | 在线观看亚洲精品 | 欧美精品福利 | 蝌蚪久久 | 国产91在线播放精品91 | 欧美精品一区二区三区久久久竹菊 | 精品伦精品一区二区三区视频密桃 | 2019中文字幕在线观看 | 非洲黑寡妇性猛交视频 | 国产美女黄色片 | 日韩欧美一级大片 | 国产99在线观看 | 在线看福利影 | 久久久免费精品视频 | 色哟哟一区二区三区 | 日韩一级在线观看 | 国内免费精品视频 | 福利国产视频 | 高清日韩 | 草草久久久| 国产经典三级 | 一区三区视频 | 精品久久久久久久久久久久久久 | 免费极品av一视觉盛宴 | 亚洲图片激情小说 |