python複習2

類(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__ : 類的全部父類構成元素(包含了以個由全部父類組成的元組)

相關文章
相關標籤/搜索