Python之类的重写和私有变量

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




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值