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
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
相关文章推荐
- python类的重写、私有变量
- python学习—Day17—类的重写,私有变量
- Python类的重写和私有变量
- c++ python交互之boost.python 简集之类成员变量设置
- python的全局变量(属性的用法),私有属性,计算对象引用数
- python继承中重载问题:私有函数不能被子类重写
- Python3基础 类的伪私有属性 __加变量名 的示例
- 关于Python的class的私有变量扎压 Python的命名机制
- Python中定义“私有”成员变量和成员函数
- python的私有变量解析
- c++ python交互之boost.python 简集之类成员变量设置
- NO.17类的重写、私有变量
- python的全局变量(属性的用法),私有属性,计算对象引用数
- python之面向对象之类变量和实例变量
- 《Python核心编程(第2版)》读书笔记(3)之下划线标识符(关键词:Python/变量名/下划线/私有变量)
- [深入Python]Python的私有变量
- Python(私有变量)类中的特殊方法
- python的私有变量 是类变量吗?
- Python3.2官方文档翻译-多重继承和私有变量
- Python _X __all__ 模拟 导入'私有'变量 及其注意点和实例