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

相关文章
相关标签/搜索