python编程基础之三十四
面向对象:三大特征:封装,继承,多态
封装:隐藏对象的实现过程,对外仅仅公开接口,控制在程序中的读取和修改的访问级别
类,函数都是一种封装
属性私有化:当类里面的属性不想被外部访问,可以将这些属性设置为私有属性,只需要家两个下划线'__', 例如:__age,这就是个私有属性,加一个下划线的成为保护属性,
可以直接访问,但是因为是保护属性所以大家对这类属性,不会特意去访问,一般不会访问,都是约定俗成的,没有具体规定要求
class Dog:
def __init__(self,name,gender,age):
self.name = name
self._gender = gender #'保护'变量
self.__age = age #私有变量
当外部希望访问内部的私有的时候,可以在内部添加一个公有方法对外来访问某个私有属性
也可以用属性装饰器
class Dog:
def __init__(self,name,gender,age):
self.name = name
self._gender = gender
self.__age = age
@property
def age(self):
return self.__age
@age.setter
def age(self,age):
self.__age =age ding = Dog('丁丁','公',5)
print(ding.name)
print(ding.age)
ding.age =10
print(ding.age)
print(ding._gender)
成员函数私有化:也就是把方法设置为私有的,也都是两个下划线开头就行面向对象语言一个主要的功能就是”继承“,所谓继承就是使现有的类无需编码便可以拥有原有类的方法和属性。被继承的类可以称之为父类、基类、超类。继承的类可以称之为子类、派生类。
继承的优点:
可以简化代码,减少冗余度
提高了代码的可维护性
提高了代码的安全性
是多态的前提
单继承:一个子类只有一个父类子类会继承父类的所有属性和方法
私有属性在子类中不能直接使用,
#语法:
class 子类名(父类名):
pass
object是Python中所有类的父类【一般情况下,如果一个类没有指明的父类,默认它的父类为object】
构造方法的继承
class Animal:
def __init__(self,name,age):
self.name = name
self.__age =age
.... class Dog(Animal):
def __init__(self,name,age,gender):
#调用父类构造方法的好处,简化了子类构造方法代码,实现了代码复用
#1. super(当前类名,self).__init__(实参列表) #实参不要带self
# super(Dog,self).__init__(name,age)
# 2. super().__init__(实参列表)#实参不要带self
# super().__init__(name, age) #3. 父类名.__init__(self,其它参数)
Animal.__init__(self,name,age)
self.gender = gender
方法的改写:说白了就是重新写一遍新的
多继承:一个子类多个父类
class 子类类名(父类1,父类2....):
子类类体
python编程基础之三十四的更多相关文章
- python编程基础之三十
时间模块: 时间戳:就是当前是键距离1970年1月1日0:0:0的秒数,后面还带小数,可以说是非常精确 时间的表示形式: a.以整数或者浮点数表示一个以秒为单位的时间间隔,这个时间的基础值1970.1 ...
- python编程基础之三十八
正则表达式:正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑. 需要引入内置模块r ...
- python编程基础之三十六
文件处理:文件处理包括读文件,写文件 读文件: 1.打开文件 2.读取文件 3.关闭文件 写文件: 1.打开文件 2.写如文件 3.关闭文件 无论是读取文件还是写文件都时需要打开文件,和关闭文件 打开 ...
- python编程基础之三十五
系统的魔术方法:系统的魔术方法特别多,但是也都特别容易懂,简单的讲就是对系统的内置函数进行重写,你需要什么效果就重写成什么样, 比如说len()方法针对的对象本来没有自定义类的对象,但是当你重写了__ ...
- python编程基础之三十二
成员方法:成员方法就是一个函数,只是作用域在类内,并且第一个参数必须是self,self代表当前对象, class Dog(object): def bark(self): #成员方法,第一个参数必须 ...
- python编程基础之十四
列表的增加元素 l1 = [10, 20, 30] l1.append(40) # 末尾追加一个值为40的元素 l1.extend([50, 60]) # 末尾追加一系列元素,extend + 可 ...
- VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
上一节讲了标签控件Tab Control以后,常用控件的内容就全部讲完了,当然并没有包括所有控件,主要是一些很常用很重要的控件.本节开始鸡啄米将为大家讲解菜单的概念及使用. 菜单简介 菜单在界面设计中 ...
- python编程基础之三十七
数据的持久化:数据持久化就是将内存中的对象转换为存储模型,以及将存储模型转换为内存中的对象的统称. 对象可以是任何数据结构或对象模型,存储模型可以是关系模型.XML.二进制流等 Python的数据持久 ...
- python编程基础之三
变量 变量定义:变量名 = 值 #不需要给定变量类型 变量命名规范:也就是标识符的命名规则, 1.由数字,字母,下划线组成,不允许数字开头 2.区分大小写 3.不能是系统保留字(keyword) 获 ...
随机推荐
- Java 中初始化 List 集合的 7 种方式
1.常规方式 List<String> languages = new ArrayList<>(); languages.add("Java"); lang ...
- Servlet+jsp用户登录加上验证码
最近公司有个项目被客户拿去进行漏洞扫描,发现用户登录太简单,容易被暴力破解.当然发现的问题很多,什么反射型XSS,存储型XSS,敏感信息泄露等等.但是我们今天不讲这么多,就说说如何修复暴力破解的问题. ...
- rabbitmq+haproxy+keepalived高可用集群环境搭建
1.先安装centos扩展源: # yum -y install epel-release 2.安装erlang运行环境以及rabbitmq # yum install erlang ... # yu ...
- iOS面试题整理带答案
iOS面试题整理带答案 找工作,面试是避免不了的! 而技术开发面试,问一些技术相关的问题是必须的,最新的技术可能人人都趋之若鹜,但有些原理和基础的也希望都有了解. 这里整理了一些iOS相关 ...
- 表达式树练习实践:C# 循环与循环控制
目录 表达式树练习实践:C# 循环 LabelTarget for / while 循环 无限循环 最简单的循环 多次循环 break 和 continue 一起 表达式树练习实践:C# 循环 C# ...
- 即时聊天APP(二) - MainActivity
主活动包含三个Fragment,分别是会话.联系人和设置,初始布局隐藏所有碎片,然后把应该显示的显示出来: //隐藏所有Fragment private void hideAll(){ Fragmen ...
- linux 操作系统级别监控 TOP命令
Top命令是Linux下一个实时的.交互式的,对操作系统整体监控的命令,可以对CPU.内存.进程监控. 是Linux下最常用的监控命令. 第一行是任务队列信息 1 user 当前登录用户数load a ...
- 59 (OC)* atomic是否绝对安全
场景:如今项目中有这样一个场景,在一个自定义类型的Property在一个线程中改变的同时也要同时在另一个线程中使用它,使我不得不将Property定义成atomic,但是由此发现atomic并不会保证 ...
- Kubernetes 从懵圈到熟练:集群服务的三个要点和一种实现
作者 | 声东 阿里云售后技术专家 文章来源:Docker,点击查看原文. 以我的经验来讲,理解 Kubernetes 集群服务的概念,是比较不容易的一件事情.尤其是当我们基于似是而非的理解,去排查服 ...
- Decorator:从原理到实践
前言 原文链接:Nealyang/personalBlog ES6 已经不必在过多介绍,在 ES6 之前,装饰器可能并没有那么重要,因为你只需要加一层 wrapper 就好了,但是现在,由于语法糖 c ...