python编程基础之三十四
2024-09-01 08:35:51
面向对象:三大特征:封装,继承,多态
封装:隐藏对象的实现过程,对外仅仅公开接口,控制在程序中的读取和修改的访问级别
类,函数都是一种封装
属性私有化:当类里面的属性不想被外部访问,可以将这些属性设置为私有属性,只需要家两个下划线'__', 例如:__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....):
子类类体
最新文章
- ComponentOne 2016 V3 发布
- A.Kaw矩阵代数初步学习笔记 1. Introduction
- asp.net 曲线图
- 这些 Git 技能够你用一年了
- Java里this的作用和用法
- PHP 5.6.11 访问SQL Server2008R2
- 利用正则表达式解析URL
- HttpClient使用详解(转)
- OpenGL第18,19,20讲小结
- LoadRunner 学习笔记(1)性能测试常见术语
- [Excel] C# ExcelHelper操作类 (转载)
- MVC提交时验证
- Promise实现多图预加载
- 分布式基础通信协议:paxos、totem 和 gossip(转载)
- [Swift]LeetCode757. 设置交集大小至少为2 | Set Intersection Size At Least Two
- 题解-ZeroJudge-c686 高斯符號
- iOS 证书申请和使用详解(详细版)阅读
- 合批只是对CPU的优化,与GPU没有任何关系
- java常用设计模式四:观察者模式
- 解决Jedis链接报超时异常和connection reset异常的方法
热门文章
- Disruptor框架中生产者、消费者的各种复杂依赖场景下的使用总结
- 基于.net EF6 MVC5+WEB Api 的Web系统框架总结(3)-项目依赖注入
- 【Offer】[58-2] 【左旋转字符串】
- TestNG(三) 基本注解BeforeMethod和AfterMethod
- python接口自动化测试七:获取登录的Cookies
- 16 (OC)* UIAnimation和CoreAnimation
- 如何从请求、传输、渲染3个方面提升Web前端性能
- JS替换字符串多余的空格符
- 关于瀑布流的布局原理分析(纯CSS瀑布流与JS瀑布流)
- Salem and Sticks-萨鲁曼的棍子 CodeForce#1105A 暴力