您的位置:首页 > 编程语言 > Python开发

Python之类的重写和私有变量

2017-11-07 15:25 369 查看
Python之类的重写和私有变量

1.类的重写

#!/usr/bin/env python

# -*- coding:utf8 -*-

# @Time     : 2017/11/7 10:19

# @Author   : hantong

# @File     : class4.py

#类的重写

class parent:

    name = 'parent'

    sex = 'M'

    age = 31

class child(parent):

#如果多个父类,则添加多个即可,但是子类会默认从左至右查找

    age = '30'

#在子类中重新定义了age这个参数,这就叫做类的重新

    def __init__(self):

        print('My name is {0}'.format(self.name))

        print('My sex is {0}'.format(self.sex))

#此处name和sex参数子类中没有定义,但是父类中定义了,子类可以继承过来

    def hello(self):

        print('hello world')

    def get_name(self):

        return(self.name)

    def get_sex(self):

        return(self.sex)

        # print(self.sex)

    def get_age(self):

        return(self.age)

a = child()

a.hello()

print(a.get_name())

print(a.get_sex())

print(a.get_age())

#当父类和子类中都定义了一个参数时,输出为子类为准,所以最终打印的结果是30而不是31,如果子类中没定义会去父类中查找

#子类还可以更改父类中定义的参数,如上例中:age,这叫类的重写,如果不重写,则会打印父类中定义的age

2.类的私有变量

#!/usr/bin/env python

# -*- coding:utf8 -*-

# @Time     : 2017/11/7 14:17

# @Author   : hantong

# @Filae     : class5.py

#类的私有变量和私有方法

# 特殊变量命名

# 1、 _xx 以单下划线开头的表示的是protected类型的变量。即保护类型只能允许其本身与子类进行访问。

# 2、 __xx 双下划线的表示的是私有类型的变量,只能允许这个类本身访问.

# 3、 __xx__定义的是特例方法。用户控制的命名空间内的变量或是属性,如init , __import__或是file 。

class A(object):

    _name = 'parent'

    __sex = 'M'

    def hello(self):

        print(self._name)

        print(self.__sex)

    def get_sex(self):

        return self.__sex

#再创建一个类即可打印出__sex

a = A()

print(a._name)

# print(a.__sex)

#这里如果直接打印实例化后的结果,会报错说‘AttributeError: 'A' object has no attribute '__sex'’

a.hello()

print(a.get_sex())

#可以打印出来__sex的结果



执行结果如下:

parent

parent

M

M



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: