首页 > 编程语言 >Python__23--对象

Python__23--对象

时间:2023-02-03 20:32:31浏览次数:32  
标签:__ name Python age -- init 对象 self

1 什么是对象?

对象(Object)是一个应用系统中的用来描述客观事物的实体,是有特定属性和行为(方法)的基本运行单位。是类的一个特殊状态下的实例。对象可以是一个实体、一个名词、一个可以想象为有自己标识的任何东西,可以概括来说: 万物皆对象。

2 面向对象的三大特征

封装、继承、多态

2.1 封装:

封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。

提高程序的安全性在方法内部对属性进行操作,在类对象的外部调用方法。无需关心方法内部的具体实现细节,从而隔离了复杂度。

2.1.1 君子协议

伪私有属性,君子协议不希望在类对象外部被访问,却可以强制访问

2.1.2 伪装

使用__双下划线伪装

def __init__(self,name,age):
sef.name=name
self.__age=age


2.1.3 强制访问

通过print(dir(实例对象名))查找属性名,后强制访问

2.2 继承:

面向对象编程 (OOP) 语言的一个主要功能就是“继承”。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。 通过继承创建的新类称为“子类”或“派生类”。 被继承的类称为“基类”、“父类”或“超类”。

目的:提高代码的复用性。

2.2.1 继承实例

class Person (object):
def __init__(self,name,age):
self.name=name
self.age=age
class Student(Person):
def __init__(self,name,age,no):
super().__init__(name.age):
self.stu_no=stu_no
class Student(Person):
def __init__(self,name,age,teacheryear):
super().__init__(name.age):
self.teacheryear=teacheryear
stu.info()
teacher.info()



2.2.2 方法重写

对父类的方法不满意,可在子类中对方法体重写。

def info(self):           #重写
super().info() #调用父类方法
print('学号:{0}').format(self.score)


2.2.3 object类

object类是所有类的父类,因此所有类都有object类的属性和方法。

如内置函数dir()可以查看指定对象所有属性

如object有一个__str__()方法,用于返回一个对于“对象的描述”,对应于内置函数str()经常用于print()方法,帮我们查看对象的信息,所以我们经常会对_str_()进行重写

Python__23--对象_多态

2.3 多态:

多态指同一个实体同时具有多种形式。同字面意思,及一个对象在不同的情况下会有不同的体现。

提高程序的可扩展性和可维护性,动态语言只关心类中有没有这个方法,有就可以执行,不关心父子关系

标签:__,name,Python,age,--,init,对象,self
From: https://blog.51cto.com/husheng/6036060

相关文章

  • Python__24--对象的特殊属性与特殊方法
    1特殊属性1.1dictclassA:passclassB:passclassC(A,B):def__init__(self,name,age):self.name=nameself.age=agex=C('Jack',20)print(x._......
  • C# 中 IsNullOrEmpty 和 IsNullOrWhiteSpace使用与区别
    一、概述C#中判断字段或者字符串是否为空或者NULL的时候,我们通常使用IsNullOrEntity和IsNullOrWhiteSpace函数进行判断,但是这两个函数在大部分情况得出的结果是一致的,但是......
  • 三种IPv6 中的隧道技术
    隧道模式直接利用现有IPv4网络实现与IPv6网络的通信。1、6PE在核心网络是IPv4网络的情况下,如果要构建一个IPv6网络,可以通过在支持IPv6协议的边界路由器之间建立IPv6隧道,由这......
  • Java两大工具库:Commons和Guava(5)
    您好,我是湘王,这是我的51CTO博客。值此新春佳节,我给您拜年啦~祝您在新的一年中所求皆所愿,所行皆坦途,展宏“兔”,有钱“兔”,多喜乐,常安宁!在开发中,经常会遇到这样的场景:有些数据......
  • 动态规划及优化
    决策单调性定义:单调矩阵:每行最值位置单调不降。完全单调矩阵:每个子矩阵都是单调矩阵,这里的子矩阵可以不连续。蒙日矩阵:满足四边形不等式的矩阵,蒙日矩阵一定是完全单调......
  • drf之视图扩展类(混入类)
    ###1.2.25个视图扩展类- 也叫混入类。作用:提供了几种后端视图(对数据资源进行增删改查)处理流程的实现,如果需要编写的视图属于这五种,则视图可以通过继承相应的扩展类......
  • 使用graphviz图形化展示路径(决策树用到此库)
    问题:当出现错误graphviz.backend.execute.ExecutableNotFound:failedtoexecuteWindowsPath('dot'),makesuretheGraphvizexecutablesareonyoursystems'PATH......
  • 数组
    数组按一定格式排列起来的,具有相同类型的数据元素集合定义后维数和维界不再改变(结构固定)且一般不做插入和删除操作,因此一般采用顺序存储结构一维数组:线性表中的数据......
  • IDEA必备插件、阿里巴巴规范插件(代码格式化,注释模板化)的安装及使用和快捷键设置
     背景:记录下idea的配置,换电脑方便直接配置这些信息第一步:安装必备插件如下英文直接翻译就是插件的作用,大部分不用额外配置,AdapterforEclipseCodeFormatter是阿......
  • 由逗号、赋值优先级想到的语法结构
    逗号的意义在C语言中,逗号用来表示一个中间的表达式;而在lua和Python中,逗号通常用来作为多值赋值的一种语法。这就导致一个有意思的现象,相同的语句在C/LUA语言中不同的意义......