建立乙個類
class person:
pass
p = person()
print(p)
類以class 宣告
self變數
這個定義與c++的this指標,都是指向物件示例本身,但使用起來是不一樣的。
可以看到函式定義的時候,都要帶乙個self引數。這是因為python直譯器會預設將物件本身作為引數傳入函式。比如
```python
class test:
def fun(self):
pass
p = test()
p.fun()
這裡p.fun()實際上會被解釋成test.fun(p)。所以若是fun沒有帶self引數,就會被認為傳入乙個引數到不帶引數的函式,從而報錯。
3. 名字不一定是self,這只是一種約定俗成的方式
## 例項化物件
與呼叫函式類似
## 使用物件方法
```python
class line:
def whoami(self):
print("i am a line class")
p = line()
p.whoami()
方法與c++類似,不同的是,這裡的類的成員函式有乙個self引數
init方法
類似於c++的建構函式,在類被例項化的時候呼叫。
class line:
x = 0
y = 0
def __init__(self,x ,y):
self.x = x
self.y = y
def showxy(self):
print("x = %d , y = %d " %(self.x,self.y))
def whoami(self):
print("i am a line class")
p = line(1,2)
p.whoami()
p.showxy()
私有成員
以雙下劃線開始命名的成員變數和成員函式為私有的。
class line:
x = 0
y = 0
__const = 10
def __init__(self,x ,y):
self.x = x
self.y = y
def showxy(self):
print("x =%d, y =%d" %(self.x,self.y))
def whoami(self):
print("i am a line class")
p = line(1,2)
p.whoami()
p.showxy()
print(p.x)
print(p.y)
print(p.__const)
這裡執行到最後一句時會顯示找不到該屬性(attributeerror: 『line『 object has no attribute 『__const『)
過載、繼承
todo
原文:
Python class內建函式 str
當我們定義乙個類 class field def init self,name self.name name field field liang print field main field instance at0x10c011d40 要怎麼樣才能輸出物件的實際內容呢,我們使用str函式 clas...
Python class類轉字典
有時候會需要從包裝的類裡面取出需要的資料,但有不能直接取出來 可以通過如下 把class轉換成字典 將class轉dict,以 開頭的也要 defprops with obj pr for name in dir obj value getattr obj,name ifnot name.start...
Python class 類 裝飾器
class father def init self,name self.name name print name s self.name defgetname self return father self.name class son father def getname self return...