Python物件導向詳解

2021-09-09 07:56:32 字數 2856 閱讀 4377

python是一種解釋型、物件導向、動態資料型別的高階程式語言。

能正確理解解釋型、物件導向、動態這三個特性很重要,能更好地編寫層次分明、高效簡潔的python**,能更好地使用python的能力。

這裡對python的物件導向特性基礎進行簡單總結記錄。

詳細內容待補充。

序號方法, 描述 & 簡單的呼叫

1init( self [,args…] )

建構函式

簡單的呼叫方法: obj = classname(args)

2del( self )

析構方法, 刪除乙個物件

簡單的呼叫方法 : del obj

3repr( self )

轉化為供直譯器讀取的形式

簡單的呼叫方法 : repr(obj)

4str( self )

用於將值轉化為適於人閱讀的形式

簡單的呼叫方法 : str(obj)

5cmp( self, x )

物件比較

簡單的呼叫方法 : cmp(obj, x)

6add( self, x )…

運算子過載

簡單的呼叫方法 : object1 + object2

類的私有屬性

__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 # 報錯,例項不能訪問私有變數

# python不允許例項化的類訪問私有資料,但可以使用 object._classname__attrname( 物件名._類名__私有屬性名 )訪問屬性

#!/usr/bin/python

# -*- coding: utf-8 -*-

class runoob:

__site = "www.runoob.com"

runoob = runoob()

print runoob._runoob__site

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

staticmethod classmethod property 說明

如果在@staticmethod中要呼叫到這個類的一些屬性方法,只能直接類名.屬性名或類名.方法名。

而@classmethod因為持有cls引數,可以來呼叫類的屬性,類的方法,例項化物件等,避免硬編碼。

staticmethod,classmethod簡單**樣例:

class a(object):  

bar = 1

def foo(self):

print 'foo'

@staticmethod

def static_foo():

print 'static_foo'

print a.bar

@classmethod

def class_foo(cls):

print 'class_foo'

print cls.bar

cls().foo()

a.static_foo()

a.class_foo()

@property屬性舉例

import math

class circle:

def __init__(self,radius): #圓的半徑radius

self.radius=radius

@property

def area(self):

return math.pi * self.radius**2 #計算面積

@property

def perimeter(self):

return 2*math.pi*self.radius #計算周長

c=circle(10)

print(c.radius)

print(c.area) #可以向訪問資料屬性一樣去訪問area,會觸發乙個函式的執行,動態計算出乙個值

print(c.perimeter) #同上

輸出結果:

314.1592653589793

62.83185307179586

參考:

python之物件導向詳解 一

1.物件導向的簡介 python是一門物件導向的語言。所謂的物件導向語言,就是語言中所有的操作都是通過物件來進行的。面向過程 1.面向過程是指,我們將程式分解為乙個乙個的步驟,通過每個步驟的抽象來完成程式。2.這種方法往往只適用於乙個功能,如果要實現別的功能,往往復用率比較低。3.這種方法比較適合人...

swift物件導向詳解

swift的物件導向 主要包括如何建立類,建立和使用類方法,類的繼承,類的擴充套件,如何使用介面及協議 命名空間 在同乙個類,在不同的類 main.swift swiftobjectfromjike created by ytdxxt on 14 12 11.import foundation 1 ...

物件導向詳解(二)

許可權修飾符 類名 引數列表 注意 構造方法的方法名字必須和類名保持完全一致 構造方法沒有返回值,不要寫返回值型別,連void也不用 每乙個類缺省會有乙個空參的空參的構造方法 如果自己寫了構造方法,預設的構造方法就失效了package com.qf.obj public class demo01 c...