類(class)
python中的類是描述具有相同屬性和方法的對象的集合類的一般形式:
class ClassName:
'''類的說明'''
類的内容
類的内容可以寫類的全局變量,方法等
例子:
class ren(object):
'''this is a new class'''
name = 'meinv'
sex = 'woman'
#類的執行個體化
a = ren()
print(type(a))
print(a.name)
print(a.sex)
a.age = 10
print(a.age)
結果:
<class '__main__.ren'>
meinv
woman
10
類的構造器
__init__ 構造函數,在生成對象時調用。由于類可以起到模闆的作用,是以,可以在建立執行個體的時候,把一些我們認為必須綁定的屬性強制填寫進去。通過定義一個特殊的__init__方法,在建立執行個體的時候,就把name,score等屬性綁上去:
#所有類都繼承object類,不寫則預設是繼承object類
class Student(object):
#類的構造器,調用類的時候self可以不指定,python解釋器預設将self指定到自身
def __init__(self, name, score):
self.name = nam
self.score = score
例子2:
def __init__(self, name, score):
self.name = name
self.score = score
s = Student('abc', 123)
print(s.name)
print(s.score)
輸出:
abc
123
類的繼承
Python的類支援多繼承,多繼承的格式如下,使用逗号分隔:
class A:
...
class B:
class C(A, B):
類的繼承中,Python首先使用子類中的方法,如果子類中沒有則去父類中尋找。變量也相同,首先尋找子類中的變量,沒有找到後才去父類中尋找。
class parent:
name = 'parent'
age = 100
def __init__(self):
print('my name is parent')
def get_name(self):
return self.name
def get_age(self):
return self.age
class child(parent):
print('my name is clild')
def hello(self):
print('hello child')
a = child()
a.hello()
print(a.get_name())
print(a.get_age())
my name is clild
hello child
parent
100
類的重寫
Super()方法
#在class parent(object):定義父類的時候,一定要寫繼承object類,不然會報錯可以解決
class parent(object):
name = 'parent'
age = 100
def __init__(self):
def get_name(self):
return self.name
def get_age(self):
return self.age
super(child, self).__init__()
#parent.__init__()
#使用父類.方法的方式直接重寫,但是類中需要重寫的内容較多時不友善
print('my name is child.')
def hello(self):
print('hello child')
my name is parent
my name is child
類的私有變量
單下劃線開頭表示protected類型變量,在一個子產品中以單下劃線開頭的變量和函數被預設當作内部函數。即保護類型隻能允許其本身與子類進行通路。 當使用“from a_module import *”時,不會将以一個下劃線開頭的對象引入 ;如果使用 import a_module 這樣導入子產品,仍然可以用 a_module._some_var 這樣的形式通路到這樣的對象。
雙下劃線表示私有類型的變,隻能允許這個類本身進行通路,連子類也不可以用。
前後雙下劃線定義的是特列方法。使用者控制的命名空間内的變量或是屬性,如__init__, __import__。隻有當文檔有說明時使用,不要自己定義這類變量。 (就是說這些是python内部定義的變量名)
例子
classPersonDemo():
self.__name=''
self.__age=0
return self.__name
def set_name(self,value):
self.__name=value
a=PersonDemo()
a.set_name('kwsy')
print a.get_name()
内置類屬性
__dict__ : 類的屬性(包含一個字典,由類的資料屬性組成)
__doc__ :類的文檔字元串
__name__: 類名
__module__: 類定義所在的子產品(類的全名是'__main__.className',如果類位于一個導入子產品mymod中,那麼className.__module__ 等于 mymod)
__bases__ : 類的所有父類構成元素(包含了以個由所有父類組成的元組)
本文轉自 粗糧面包 51CTO部落格,原文連結:http://blog.51cto.com/culiangmianbao/1979467,如需轉載請自行聯系原作者