類(class)python
python中的類是描述具備相同屬性和方法的對象的集合函數
類的通常形式:this
class ClassName:對象
'''類的說明'''繼承
類的內容文檔
類的內容能夠寫類的全局變量,方法等字符串
例子:get
class ren(object):it
'''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:
class Student(object):
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首先使用子類中的方法,若是子類中沒有則去父類中尋找。變量也相同,首先尋找子類中的變量,沒有找到後纔去父類中尋找。
例子2:
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):
def __init__(self):
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):
print('my name is parent')
def get_name(self):
return self.name
def get_age(self):
return self.age
class child(parent):
def __init__(self):
super(child, self).__init__()
#parent.__init__()
#使用父類.方法的方式直接重寫,可是類中須要重寫的內容較多時不方便
print('my name is child.')
def hello(self):
print('hello child')
a = child()
a.hello()
print(a.get_name())
print(a.get_age())
輸出:
my name is parent
my name is child
hello child
parent
100
類的私有變量
單下劃線開頭表示protected類型變量,在一個模塊中以單下劃線開頭的變量和函數被默認看成內部函數。即保護類型只能容許其自己與子類進行訪問。 當使用「from a_module import *」時,不會將以一個下劃線開頭的對象引入 ;若是使用 import a_module 這樣導入模塊,仍然能夠用 a_module._some_var 這樣的形式訪問到這樣的對象。
雙下劃線表示私有類型的變,只能容許這個類自己進行訪問,連子類也不能夠用。
先後雙下劃線定義的是特列方法。用戶控制的命名空間內的變量或是屬性,如__init__, __import__。只有當文檔有說明時使用,不要本身定義這類變量。 (就是說這些是python內部定義的變量名)
例子
classPersonDemo():
def __init__(self):
self.__name=''
self.__age=0
def get_name(self):
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__ : 類的全部父類構成元素(包含了以個由全部父類組成的元組)