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

歡迎訪問 生活随笔!

生活随笔

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

python

一文看懂Python(六)-----类与对象篇

發布時間:2025/3/15 python 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一文看懂Python(六)-----类与对象篇 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天給大家介紹“對象”。眾所周知,Python是一門面向對象的編程語言,Python之所以如此強大,很大一部分原因也是因為Python中無處不對象,由此可知,學好Python的關鍵之一就是學好類與對象。好!步入正題。

一、什么是類、什么是對象

  • 類的定義
    一個類包括:
    • 1.屬性,描述的是類的靜態屬性
    • 2.方法,描述的是類的動作- 對象的定義
  • 對象的定義
    通過類定義的數據結構實例,因此也被稱為實例對象。
  • 小案例
# 定義一個學生類 class Stu:numid = 2020000078name = 'djk'gender = 1def Print(self):print('我是一個學生!') # 實例化一個對象stu stu = Stu() stu.Print()

二、類如何定義

class Stu:def __init__(self,numid,name,gender,loc):self.numid = numidself.name = nameself.gender = genderself.loc = locdef Print(self):print(self.numid,self.name,self.gender,self.loc) # 實例化 stu = Stu(1,'djk',1,'shandong') # 調用Print()函數 stu.Print()

至于這里為什么有個self,可以看我另一篇文章,里面講解的非常清楚,這里就不詳細介紹了,而且還通過與Java語言做對比來理解self。深入理解Python中的self參數和__init__(self)方法–通過類比Java語言

三、面向對象的三大特征

3.1 封裝

對象就是一個封裝,將屬于對象的屬性和方法封裝成一個類,只允許對象自己在內部訪問!

3.2 繼承

  • 繼承是子類自動共享父類之間數據和方法的機制
  • 案例
class Parent:def Hello(self):print('正在調用父類的方法') class Child(Parent):pass p = Parent() p.Hello() c = Child() c.Hello()

  • 如果子類中定義與父類同名的方法和屬性,則會自動覆蓋父類對應的屬性和方法
  • 案例
class Parent:def Hello(self):print('正在調用父類的方法') class Child(Parent):def Hello(self):print('正在調用子類的方法') p = Parent() p.Hello() c = Child() c.Hello()

3.3 多態

  • 什么是多態呢?
    多態就是方法名一樣,但是方法的實現方式不一樣
  • 案例
# 多態案例 class A():def fun(self):print('我是小A') class B():def fun(self):print('我是小B') a = A() a.fun() b = B() b.fun()

四、什么是公有、什么是私有

  • 類Class中成員變量有兩種屬性分別是:實例屬性和類屬性。

  • 實例屬性是在構造函數中定義的(__init__),定義時候以self作為前綴。

  • 類屬性是在類中方法之外但又在類之中定義的屬性。類屬性在所有實例之間共享。在類內部和類外部都可以通過"類.類屬性"來訪問。

兩者訪問形式:主程序中,實例屬性只能通過對象名訪問;而類屬性能夠通過類名訪問,也可以通過對象名訪問。

  • 對于公有成員(方法和變量),可以公開使用,既可以在類內部訪問,也可以在類外部訪問。

  • 對于私有成員(方法和變量),只能在類內部使用,但也可以通過特殊的方法進行訪問,即"對象名._類名+私有成員",book._Book__types。

    • 兩者表現形式:類屬性定義時,如果以兩個短下滑線"__"開頭則表示是私有屬性,否則就是公有屬性。例如,self.size = s為私有屬性,而self.price = money為公有屬性。
      私有方法:以兩個下滑線"
      "開始,不能通過對象名直接調用。只能在屬于對象的方法中通過self調用。例如,self._namemethod
  • 公有方法:通過對象名直接調用。例如,a.printLcs

  • 靜態方法:可以通過類名和對象名調用,但不能直接訪問屬于對象的成員,只能訪問屬于類的成員。

五、一些相關的BIF

方法名方法介紹
issubclass(class,classinfo)如果class是classinfo的一個子類,返回True
isinstance(object,classinfo)檢查一個實例對象object是否是屬于classinfo類的
hasattr(object,name)測試一個對象object是否有指定的屬性name
getattr(object,name[,default])返回對象指定的屬性值,如果屬性不存在的話,,如果設置了default,則將default打印出來;否則會拋出一個AttributeError的異常
setattr(object,name,value)設置對象中指定屬性的值,如果指定屬性不存在,會新建一個屬性并賦值
delattr(object,name)刪除對象中指定屬性;如果指定屬性已經不存在,則會拋出一個AttributeError的異常
property(fget = None,fset = None,fdel = None,fdoc = None)以自己定義好的屬性去設置屬性

六、類、類對象與實例對象的關系

class C:count = 0 a = C() b = C() c = C() print('a修改之前:{}'.format(a.count)) print('b修改之前:{}'.format(b.count)) print('c修改之前:{}'.format(c.count)) c.count += 10 # 修改的是實例對象c print('c修改實例對象之后:{}'.format(c.count)) # 我們修改類對象 C.count += 100 print('a修改之后:{}'.format(a.count)) print('a修改之后:{}'.format(b.count)) print('c修改類對象之后:{}'.format(c.count)) # 為什么會這樣呢?因為實例屬性將類屬性給覆蓋了,我們只能看到實例屬性,不能看到類屬性

總結

以上是生活随笔為你收集整理的一文看懂Python(六)-----类与对象篇的全部內容,希望文章能夠幫你解決所遇到的問題。

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