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

歡迎訪問 生活随笔!

生活随笔

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

python

python3 面向对象详解_Python3面向对象

發布時間:2024/8/5 python 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python3 面向对象详解_Python3面向对象 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

創建類

#!/usr/bin/python

# -*- coding: UTF-8 -*-

class Employee:

'所有員工的基類'

empCount = 0

def __init__(self, name, salary):

self.name = name

self.salary = salary

Employee.empCount += 1

def displayCount(self):

print "Total Employee %d" % Employee.empCount

def displayEmployee(self):

print "Name : ", self.name, ", Salary: ", self.salary

empCount 變量是一個類變量,它的值將在這個類的所有實例之間共享。你可以在內部類或外部類使用 Employee.empCount 訪問。

第一種方法 __init__() 方法是一種特殊的方法,被稱為類的構造函數或初始化方法,當創建了這個類的實例時就會調用該方法

self 代表類的實例,self 在定義類的方法時是必須有的,雖然在調用時不必傳入相應的參數。

創建實例對象

"創建 Employee 類的第一個對象"

emp1 = Employee("Zara", 2000)

"創建 Employee 類的第二個對象"

emp2 = Employee("Manni", 5000)

訪問屬性

emp1.displayEmployee()

emp2.displayEmployee()

print "Total Employee %d" % Employee.empCount

添加,刪除,修改及訪問類的屬性

emp1.age = 7 # 添加一個 'age' 屬性

emp1.age = 8 # 修改 'age' 屬性

del emp1.age # 刪除 'age' 屬性

# 你也可以使用以下函數的方式來訪問屬性:

hasattr(emp1, 'age') # 如果存在 'age' 屬性返回 True。

getattr(emp1, 'age') # 返回 'age' 屬性的值

setattr(emp1, 'age', 8) # 添加屬性 'age' 值為 8

delattr(emp1, 'age') # 刪除屬性 'age'

Python內置類屬性

__dict__ : 類的屬性(包含一個字典,由類的數據屬性組成)

__doc__ :類的文檔字符串

__name__: 類名

__module__: 類定義所在的模塊(類的全名是 '__main__.className',如果類位于一個導入模塊mymod中,那么 className.__module__ 等于 mymod)

bases : 類的所有父類構成元素(包含了一個由所有父類組成的元組)

析構函數

#!/usr/bin/python

# -*- coding: UTF-8 -*-

class Point:

def __init__( self, x=0, y=0):

self.x = x

self.y = y

def __del__(self):

class_name = self.__class__.__name__

print class_name, "銷毀"

pt1 = Point()

del pt1 # 銷毀對象

類的繼承

語法:

派生類的聲明,與他們的父類類似,繼承的基類列表跟在類名之后,如下所示:

class SubClassName (ParentClass1[, ParentClass2, ...]):

...

實例

#!/usr/bin/python

# -*- coding: UTF-8 -*-

class Parent: # 定義父類

parentAttr = 100

def __init__(self):

print "調用父類構造函數"

def parentMethod(self):

print '調用父類方法'

def setAttr(self, attr):

Parent.parentAttr = attr

def getAttr(self):

print "父類屬性 :", Parent.parentAttr

class Child(Parent): # 定義子類

def __init__(self):

print "調用子類構造方法"

def childMethod(self):

print '調用子類方法'

c = Child() # 實例化子類

c.childMethod() # 調用子類的方法

c.parentMethod() # 調用父類方法

c.setAttr(200) # 再次調用父類的方法 - 設置屬性值

c.getAttr() # 再次調用父類的方法 - 獲取屬性值

方法重寫

如果你的父類方法的功能不能滿足你的需求,你可以在子類重寫你父類的方法:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

class Parent: # 定義父類

def myMethod(self):

print '調用父類方法'

class Child(Parent): # 定義子類

def myMethod(self):

print '調用子類方法'

c = Child() # 子類實例

c.myMethod() # 子類調用重寫方法

類屬性與方法

類的私有屬性

__private_attrs:兩個下劃線開頭,聲明該屬性為私有,不能在類的外部被使用或直接訪問。在類內部的方法中使用時 self.__private_attrs

類的方法

在類的內部,使用 def 關鍵字可以為類定義一個方法,與一般函數定義不同,類方法必須包含參數 self,且為第一個參數

類的私有方法

_private_method:兩個下劃線開頭,聲明該方法為私有方法,不能在類的外部調用。在類的內部調用 self.__private_methods

實例

#!/usr/bin/python

# -*- coding: UTF-8 -*-

class JustCounter:

__secretCount = 0 # 私有變量

publicCount = 0 # 公開變量

def count(self):

self.__secretCount += 1

self.publicCount += 1

print self.__secretCount

counter = JustCounter()

counter.count()

counter.count()

print counter.publicCount

print counter.__secretCount # 報錯,實例不能訪問私有變量

單下劃線、雙下劃線、頭尾雙下劃線說明

__foo__: 定義的是特殊方法,一般是系統定義名字 ,類似 __init__() 之類的。

_foo: 以單下劃線開頭的表示的是 protected 類型的變量,即保護類型只能允許其本身與子類進行訪問,不能用于 from module import *

__foo: 雙下劃線的表示的是私有類型(private)的變量, 只能是允許這個類本身進行訪問了。

總結

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

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