面向對象

  • 類(Class)

a、描述具備相同的屬性和方法的對象集合,它定義了該集合中每一個對象所共有的屬性和方法,對象是類的實例函數

b、類名習慣上使用單數名詞,而且首字母大寫code

c、除非是Python 3.0 以前版本中默認附帶的代碼,不然再繼續使用舊式類已無必要,新式類的語法中,須要在模塊或者腳本開始的地方放置賦值語句_metaclass_=type(並不會在每一個例子總顯示地包含這行語句。)除此以外也有其餘的方法,例如繼承新式類(好比 object) 對象

#類的定義
class ClassName:
    <statement-1>
    .
    .
    <statement-N>

類實例化後,可以使用其屬性,建立一個類,能夠經過類名訪問其屬性繼承

 

  • 類對象

a、類的實例化,對象包括兩個數據成員(類變量和實變量)和方法it

b、類對象支持兩種操做:屬性引用和實例化class

c、屬性引用使用和 Python 中全部屬性引用同樣的標準語法:obj.name變量

d、類對象建立後,類命名空間全部的命名都是有效屬性名object

class MyClass:
    "一個簡單的類實例"
    i = 12345
    def f(self):
        return 'hello,word'

#實例化類
x = MyClass()

print ("Myclass 類的屬性 i",x.i)
print ("類的方法",x.f())

#輸出
MyClass 類的屬性 i 爲: 12345
MyClass 類的方法 f 輸出爲: hello world

 

  • 構造方法

將對象建立爲有初始狀態的,類可能會定義一個名爲_init_()的特殊方法(構造方法),實例化會自動調用命名空間

#構造方法
class Myclass:
    def _int_(self):
        self.data = []
x = Myclass #實例化會自動調用構造函數

class Complex:
    def __init__(self,realpart,imagpart): #有參數的構造方法
        self.r = realpart
        self.i = imagpart

x = Complex(3.0,-4.5)
print (x.i,x.r)
#輸出
-4.5 3.0

 

  • self表明類的實例,而非類

類的 方法與普通的函數只有一個特別的區別--它們必須有一個額外的第一個參數名稱,按照慣例它的名稱是 selfmeta

class Test:
    def prt(self):
        print (self)
        print (self.__class__)

t = Test()
t.prt()
#輸出
<__main__.Test instance at 0x0000000002B3CA88>
__main__.Test

從輸出能夠很明顯的看出,self 表明的是類的實例,表明當前對象的地址,而 self.class 則指向類,self不是Python 的關鍵字,能夠把它換成 runoob也是能夠正常執行的

  • 類的方法

在類內部,使用 def 關鍵字來定義一個方法,與通常函數定義不一樣,類方法必須包含參數 self ,且爲第一個參數,self 表明的是類的實例

class People:
    #定義基本屬性
    name = ''
    age = 0
    _weight = 0 #私有化的屬性,類外部沒法直接訪問
    #定義構造方法
    def __init__(self,name,age,_weight):
        self.name = name
        self.age =  age
        self._weight = _weight
    def speak(self):
        print ("%s 說:我 %s 歲 "%(self.name,self.age))

p = People('runob',10,30)
p.speak()

#輸出
runob 說:我 10 歲
相關文章
相關標籤/搜索