class Animal(object):
def __init__(self,name,age):
self.name = name
self.age = age
def sit(self):
print(self.name + 'set')
def roll_over(self):
print(self.name + 'roll over')
如上例所示,__init__函數方法跟C++的new()一樣,是用於初始化class的,其中self跟C++的this指針有些類似,用於指定自己所具有的class內部變量。__init__函數中的self參數是必須寫的,並且要放在所有參數的前面。
#dog類繼承自animal類
class Dog(Animal):
def __init__(self,name,age):
super(Dog,self).__init__(name,age)#用於初始化父類數據
self.name = name
self.age = age
#重寫方法
def sit(self):
print(self.name + 'is wang wang')
相對C++來講方法的重寫直接簡單粗暴的寫相同名字即可重寫。
python導入模塊或者類使用import語句。相當於C++的include.
比如一個文件名叫做 code.py,裏面有各種各樣的類:class1 class2等
#從code.py文件導入class1
from code import class1
#從code.py文件導入class2
from code import class2
#或者
from code import class1,class2
#導入整個模塊
import car
#導入模塊中的每個類
from car import *
python的類也支持操作符重載
class template(object):
def __init__(self,a,b):
self.a = a
self.b = b
#操作符重載
def __add__(self,other):
return template(self.a+other.a,self.b+other.b)
python類私有化變量需要在變量前面加兩個下劃線,比如__private_value
protect變量只加一個下劃線_protect_value
__functionname__兩個下劃線+函數名+兩個下劃線是系統自定義的函數,如:
__init__, __del__(相當於C++的析構函數) , __cmp__(self,x) 比較對象。
python內置類屬性,這些是python聲明類中系統爲類自動添加的一些屬性變量,他們是public的可以直接訪問。
__dict__ : 類的屬性
__doc__ : 類 的文檔字符串
__name__ : 類名
__module__ : 類定義所在的模塊
__bases__ : 類的所有父類構成元素