• 在python中如何将一些功能借鉴及实现?
  • python模块的迁移调用?感觉还是没有形成系统化的构建?
  • 在学习C++的时候,来了一丝灵感,python的重点不是也是类和对象吗?
  • 本人实践python项目总是直接上手看项目,基础还是过于薄弱的,因此阶段性总结。
  • 欢迎直接从项目看python的一起学习哇,后续应该会整理成系列吧!

实践中,多次会看到类class、def等关键词。

表面理解:哦,这是一个类!这是一个函数!实际上,它到底是什么意思呢???

还是好好系统的形成概念!

目录

1 面向对象

2 定义类

3 创建对象

4 类的成员

5 封装性-项目重点关注对象!

6 继承性

7 多态性


1 面向对象

面向对象是一种编程思想,即按照真实世界的思维方式构建软件系统。

案例:

以校园管理系统为例:

学生和老师作为不同的人群(类),学生A和学生B是学生类的个体(对象/实例)。

以汽车品牌为例:

所有的车都是车类(类),不同的品牌就是不同的个体(对象/实例)。

2 定义类

实际上,python的数据类型都是类,同时我们可以自定义类,即创建一种新的数据类型。这在项目中非常常见!样式如下:

class 类名[(父类)]:

类体

  • 以英文半角冒号结尾
  • 缩进4个半角空格
  • 父类可以省略申明,表示直接继承object类
class Car(Object):pass #占位等后续操作

3 创建对象

类相当于一个模板,依据这样的模板来创建对象,也就是类的实例化,所以对象也被称之为“实例”

class Car(object):passcar = Car()
# 创建小汽车对象
# 括号表示调用构造方法,构造方法用于初始化对象

4 类的成员

类体中可以包含类的成员

  • 成员变量:数据成员,保存了类或对象的数据。

    • 实例变量:属于对象,对象调用。个体特有的数据。“对象.实例变量”
    • 类变量:属于类,类调用。所有实例共享!“类名.类变量”
  • 构造方法:特殊的函数,用于初始化类的成员变量。​​​​​​​__init__()。
  • 成员方法:类中定义的函数。
    • ​​​​​​​实例方法:属于对象,对象调用。个体特有的方法。
    • 类方法:属于类,类调用。需要修饰器,以@为开头的修饰函数、方法和类。
      • ​​​​​​​注意:类方法可以访问类变量和其它类方法,但不能访问其他实例方法和实例变量。
  • 属性:对类进行封装而提供的特殊方法。
    • ​​​​​​​可以替代get()和set()公有方法,避免外部调用者通过两个公有方法访问被封装私有成员变量的麻烦。
class Dog:   # 类变量home = Kitty# 构造方法                                   # 类中self表示当前对象def __init__(self, name, age,sex = "雌性":  # 构造方法,self表示实例,第一个必须是selfself.name = name                         # 创造和初始化实例变量self.age = age                           # 创造和初始化实例变量# 实例方法def run(self):                               # 定义实例化方法,只有self一个参数print("{}在跑...".format(self.name))# 实例方法def speak(self, sound):                      # 定义实例化方法,第一个参数是self,第二个是soundprint(' {}在叫,"{}"! '.format(self.name, sound))# 类方法@classmethoddef look_by(cls, num)        # cls代表自身,即Dog类return cls.home*numdog = Dog('球球',2)              # 创造对象,调用构造方法时,省略默认值,不需要传入self参数
dog2 = Dog(name='花花',age=2)    # 使用关键字参数调用构造方法
dog.run()                         # 调用时采用“对象.实例方法”形式,不需要传递参数
dog.speak('汪 汪 汪')             # 需要传递一个函数
print('主人家:{0}'.format(Dog.home))    # 调用时采用“类名.类变量”形式
num_home = Dog.look_by(500)       # 对类的方式可以通过“类名.类方法”形式访问

5​​​​​​​ 封装性-项目重点关注对象!

封装性是面向对象重要的基本特性之一。封装隐藏了对象的内部细节,只保留了有限的对外接口,外部调用者不用关心对象的内部细节,使得操作对象变得简单!(这个part应该是项目重点!)

  • 私有变量:防止外部调用者随意存取类的内部数据(成员变量),内部数据(成员变量)会被封装为私有变量。外部调用者只能通过方法调用私有变量。变量前加上双下划线(__)即可。在类的内部可以访问私有变量,类的外部不可以访问。
  • 私有方法:私有方法与私有变量类似,在方法前加上双下划线(__)。在类的内部可以访问私有方法,类的外部不可以访问。
  • 使用属性:在一个类中不应该有公有的成员变量,这些变量应该被设计为私有的,然后通过公有的set(赋值)和get(取值)方法访问。
    • ​​​​​​​属性本质上就是两个方法,在方法前加上装饰器使得方法成为属性。属性使用起来类似于公有变量,可以在赋值符(=)左边或者右边,左边赋值,右边取值。
class Dog():# 构造方法def __init__(self, name, age, sex='雌性'):self.name = nameself.__age = age# 实例方法def run(self):                              print("{}在跑...".format(self.name))# get方法def get_age(self):                     return self.__age# 属性替代get方法@propertydef age(self):return self.__age# set方法def set_age(self, age):                     self.__age = age# 属性替代set方法@age.setterdef age(self, age):self.__age = agedog = Dog('球球',2)
print('狗狗的年龄:{}'.format(dog.get_age()))
dog.set_age(3)
print('修改后狗狗的年龄:{}'.format(dog.get_age()))   # 属性赋值
print('狗狗的年龄:{}'.format(dog.age))
dog.age = 3
print('修改后狗狗的年龄:{}'.format(dog.age))

6 继承性

继承性也是面向对象重要的基本特性之一。项目中也很常见的操作!较为好理解!

继承关系,顾名思义。

如:

猫属于动物,动物就是父类(一般类),猫是子类(特殊类)。

特殊类拥有一般类的全部数据和操作,即猫具有动物的全部特征和行为。

称,子类继承父类。

  • 子类继承父类时,只有公有的成员变量和方法才可以被继承。
  • 当子类继承多个父类时,如果在多个父类中有相同的成员方法或成员变量,则子类优先继承左边父类中的成员方法或成员变量,从左到右继承级别从高到低。
  • 如果子类的方法名于父类的方法类名相同,则在这种情况下,子类的方法回重写Override父类的同名方法。
# 定义父类动物
class Animal:def __init__(self, name):self.name = namedef show_info(self):return "动物的名字:{0}".format(self.name)def move(self):print("动一动...")# 定义子类猫
class Cat(Animal):def __init__(self, name, age):super().__init__(name)    # 调用父类构造方法,初始化父类成员变量self.age = age            # 实例变量agecat = Cat('Tom', 2)
cat.move()
print(cat.show_info())

7 多态性

多态性也是面向对象的基本特性之一。多态指对象可以表现出多种形态。

在多个子类继承父类,并重写父类方法后,这些子类所创建的对象之间就是多态。这些对象采用不同的方式实现父类的方法。

【Python】类与对象:封装/继承/多态相关推荐

  1. python 参数类型的多态_【Python】面向对象:类与对象\封装\继承\多态

    六.Python面向对象--类与对象\封装\继承\多态 1.什么是面向对象编程 1.1 程序设计的范式:程序可控,易于理解 1.2 抽象并建立对象模型 1.3 程序是不同对象相互调用的逻辑.每个对象在 ...

  2. python类与对象 封装继承与多态 0308

    类与对象 初始化方法 init方法 带参实例化类 del方法 str方法 私有 继承 方法的重写 super 父类名称调父类方法 调用父类私有 间接调用 多继承 新式类经曲类 多态 类属性 类方法 静 ...

  3. java自学 part2 数组 类和对象 包 继承 多态 抽象类 接口

    数组:arr 获取数组的长度:arr.length 数组转字符串: Arrays.toString(arr) 数组的拷贝: Arrays.copyOf(arr,arr.length) 数组的排序:Ar ...

  4. 一文讲全了Python 类和对象内容

    摘要:这是一个关于 Python 类和对象的全部内容. 本文分享自华为云社区<从零开始学python | Python 类和对象-面向对象编程>,原文作者:Yuchuan  . Pytho ...

  5. 面向对象 详解笔记 方法 类 对象 封装 继承 重写 多态 接口

    文章目录 面向过程&面向对象 面向过程 面向对象 什么是面向对象 回顾方法及加深 方法的定义 修饰符 返回类型 break:跳出switch,结束循环和return的区别 方法名:注意规范就o ...

  6. python入门笔记——类和对象⑤(继承)

    python入门笔记--类和对象⑤(继承) # python中展现面向对象的三大特征:封装.继承.多态 # 封装:把内容封装到某个地方以便后续的使用 # 对封装来说,其实就是使用初始化构造方法将内容封 ...

  7. python多态的三种表现形式_python小结----面向对象的三大特征(封装,继承,多态)

    面向对象的三大特征: 封装,继承,多态 面向对象的编程思想核心:高类聚,低耦合–程序的设计模式范畴 封装 什么是封装: 在面向对象编程的思想中,对代码进行高度封装,封装又叫包装 封装就是指将数据或者函 ...

  8. python--编写程序:实现乐手弹奏乐器,乐手可以弹奏不同的乐器而发出不同的声音------使用类的封装继承多态的问题/使用面向对象的思想,设计自定义类,描述出租车和家用轿车的信息

    编写程序:实现乐手弹奏乐器,乐手可以弹奏不同的乐器而发出不同的声音 ------使用类的封装继承多态的问题 class Instrumnet():#乐器类def make_sound(self):pa ...

  9. python中对象的特性_python中类与对象之继承,python类和对象理解,面对对象的三大特性之...

    python中类与对象之继承,python类和对象理解,面对对象的三大特性之 面对对象的三大特性之继承 1.什么是继承? 在程序中,继承指的是class与class之间的关系 继承是一种关系,必须存在 ...

  10. c语言编程 菲薄拉,C语言设计模式-封装-继承-多态

    快过年了,手头的工作慢慢也就少了,所以,研究技术的时间就多了很多时间,前些天在CSDN一博客看到有大牛在讨论C的设计模式,正好看到了,我也有兴趣转发,修改,研究一下. 记得读大学的时候,老师就告诉我们 ...

最新文章

  1. Centos6.2上做nginx和tomcat的集成及负载均衡(已实践)
  2. jvm十五:java虚拟机内存图
  3. 百度咋做长文本去重(一分钟系列)--转
  4. mq多个消费者消费一个消息_ActiveMQ多个消费者消费不均匀问题
  5. Qt 中Treewidget添加右键菜单
  6. php 将颜色透明度,css中如何使颜色透明度
  7. Cookie、token、session的区别是什么?
  8. 信息——人类现代文明的奇迹
  9. 软件的一些标号及对应版本
  10. JS高级程序设计(10)
  11. 使用VUE分分钟写一个验证码输入组件
  12. HTML跳转到QQ聊天界面
  13. 基于Springboot的Java邮件系统的设计与实现(附论文和源码)
  14. 使用OpenResty控制CDN回源主机
  15. 什么是微信公众平台?
  16. java木马编码,深度好文:解码“深度伪装”的ZeuS网银木马
  17. Charles 抓包原理与实践
  18. 高省是什么?它跟社交电商APP有何区别?资深淘客为你揭秘
  19. 【CSPJ】CSPJ小学组
  20. tf.TensorArray简单教程

热门文章

  1. 解决Docker MySQL无法被宿主机访问的问题
  2. 初三计算机模拟考试在房考吗,中考跟模拟考有哪些不同?哪个难度更大?初三的你都清楚吗?...
  3. linux文件目录:/etc/hosts文件详解
  4. 【工程化开发】 http://localhost:8080/访问 ,Cannot GET / 解决方案
  5. MG-SOFT MIB软件自建MIB文件及导入使用
  6. 如何启动虚拟磁盘服务器,Hyper-V管理实战之添加虚拟硬盘
  7. matlab怎么做参数估计,[转载]参数估计(matlab)
  8. aul软件oracle,AUL/MyDUL修复Oracle
  9. 计算机设备的输入设备有,计算机比较重要的输入设备有哪些
  10. linux windows 设置 网卡1000m模式