Python類的重寫和私有變量

Python類的重寫和私有變量orm

 

 

一、 類的重寫get

若是子類沒有定義__init__()方法,子類初始化的時候就會調用父類的方法,可是當子類定義了__init__()方法,子類就不會調用父類的__init__()方法,it

 

class ren(object):
    ren_name = 'ren'
    sex = 'F'
    def __init__(self,address,age):
        self.address = address
        self.age = age
        print('ren is {0}'.format(self.ren_name))
    def get_name(self):
        return self.name
    def get_sex(self):
        return self.sex


class child(ren):
    child_name = 'test'
    # sex = 'M'
    def __init__(self,address,age):
        super(child,self).__init__(address,age)
        # ren.__init__(self,address,age)
        print('my name is {0}'.format(self.child_name))
    def hello(self):
        print('hello world!')
    def get_name(self):
        print('todaoy is nice day.')



test = child('beijing',20)
test.hello()
test.get_name()
print(test.get_sex())
print(test.address)
print(test.age)

結果:ast

ren is renform

my name is testclass

hello world!test

todaoy is nice day.import

F變量

beijingmodule

20

 

 

 

二、 類的私有變量

在Python中能夠經過在屬性變量名前加上雙下劃線定義屬性爲私有屬性

_xx 以單下劃線開頭的表示的是protected類型的變量。即保護類型只能容許其自己與子類進行訪問。

__xx 雙下劃線的表示的是私有類型的變量。只能容許這個類自己進行訪問了,連子類也不能夠用於命名一個類屬性(類變量),私有變量,不容許進行實例化

__xx__定義的是特列方法。用戶控制的命名空間內的變量或是屬性,如init , __import__或是file 。

 

 

 

 

class A(object):

    _name = 'abc'

    __sec = 'F'

    def hello(self):

        print(self._name)

        print(self.__sex)



a = A()

print(a._name)

print(a.__sex)

結果:

abc

Traceback (most recent call last):

  File "C:/Users/admin/PycharmProjects/test/class/lei4.py", line 17, in <module>

    print(a.__sex)

AttributeError: 'A' object has no attribute '__sex'

 

 

 

class A(object):

    _name = 'abc'

    __sex = 'F'

    def hello(self):

        print(self._name)

        print(self.__sex)



a = A()

print(a._name)

a.hello()

結果:

abc

abc

F

 

class A(object):

    _name = 'abc'

    __sex = 'F'

    def hello(self):

        print(self._name)

        print(self.__sex)

    def get_sex(self):

        return self.__sex



a = A()

print(a._name)

a.hello()

print(a.get_sex())

結果:

abc

abc

F

F

相關文章
相關標籤/搜索