Python自学面向对象章节有感

Python面向对象程序设计有感

有学到面对对象中的对象是指客观世界中存在的对象,世间万物全可以是对象。概括上说,面向对象技术是一种从组织结构上模拟客观世界的方法。我的主观感受上并没有很好的理解这种编程思想,也没有明确的感受到它与面向过程编程的区别,这或许是因为我才接触编程半年,在后续的学习中,我会继续探索。
1.面向对象概述
(1)对象
对象分为静态部分和动态部分,静态部分被称为“属性”指对象本身的属性,例如人的性别、身高,动态部分指对象的行为,例如人可以走路、跑步。
具有相同属性和行为的一类实体被称为类,类是封装对象的属性和行为的载体。我在之后的学习中明白类是极为重要的,不知道其他语言是不是也要类的概率……
面向对象程序设计有封装、继承和多态三大基本特征。区别如下:

特征 概念 作用
封装 指用类作为载体将对象的属性和行为封装起来 是面向对象程序设计的核心思维,保证了类内部数据的完整性
继承 子类复用父类的属性和行为的同时又有特有的属性和行为 是实现重复利用的重要手段
多态 将父类对象应用于子类的特征 子类继承父类的勇士,也具备自己的特征并且能够实现不用的效果

在后续的学习中,我初步了解了封装、继承以及多态的意思和效果,挺神奇的……
2.类的定义和使用
定义类需要使用关键字class(为什么是class?),语法是class classname:,接着是应用语法name = classname()创建类的实例。
Python创建类后,可以创建_ init ()方法,我学的书上说是类似于Java的构造方法,就称它为构造方法吧。这个构造方法必须创建第一个参数self,他是用于访问类中的属性和方法的且会自动传递实参,因此在创建实例时就不需要传递参数给self。但是为什么要定义一个构造方法呢?这是我困惑的地方。我了解到这个方法是为了让实例绑定属性的。
类的成员由实例方法和数据成员组成。实例方法简单说就是在类中定义一个函数,只不过这个函数的第一个参数必须是self。数据成员简单说就是在类中定义变量,它分为类属性和实例属性,类属性是指在类中函数外定义的变量,实例属性是指定义在类的函数中的变量。
最后则是类的访问限制,个人认为也算是封装能力的一点体现。我们可以通过在属性或者方法名前加入单下划线
,如_foo;双下划线__,如__foo;或收尾双下划线,如__foo__。

类型 表示类型 作用
单下划线 表示保护类型 只允许类本身和子类进行访问
双下划线 表示私有类型 只允许定义该方法的类本身进行访问
首尾双下划线 表示定义特殊方法 不明

3.属性
除了上述的属性外,我们还能通过@propetry将一个方法转化成属性。可以使得这个属性能用于计算且可以直接通过方法名来访问方法。格式如下:

//@property
    def name(self):
        body

通过这个方法我们还可以为属性添加安全保护机制,即把属性设置为私有,实现访问限制。
4.继承
面对对象编程中,被继承的称为父类或者基类,新的类称为子类或者派生类,通过如下格式继承:

//class name(基类):
    body

当使用继承时,如果基类中的某个方法不适用于子类,我们就需要对这个方法进行重写直到满足我们的要求。在子类中不会自动调用基类的构造方法,就需要在子类中使用super()函数调用基类的构造方法。
**总结:大致学习了Python面向对象编程章节,对面向对象编程的思维还是不够清晰。对于类中的某些函数或者定义,书上并没有给出说明,整体上掌握还有欠缺。建议多进行实战,加深对知识的理解和运用。最后,这个章节带给我的感觉是神奇且神秘的。

原文地址:https://www.cnblogs.com/trainking-star/p/12232587.html

时间: 2024-10-15 13:46:49

Python自学面向对象章节有感的相关文章

Python自学之乐-多继承顺序问题

最近自学Python到面向对象这里,感觉有必要把多继承这里好好理解一下,下面是我自己的一点小总结,如果有朋友觉得有什么不足的,还望不吝赐教! 1.#Author:clark class Animal(object):#动物类 #kind = "" def __init__(self,name,age,food): self.Name = name self.Age = age self.food = food def eat(self): print("%s is eat %

My way to Python - Day05 - 面向对象-思维导图

My way to Python - Day05 - 面向对象 思维导图

python自学笔记

python自学笔记 python自学笔记 1.输出 2.输入 3.零碎 4.数据结构 4.1 list 类比于java中的数组 4.2 tuple 元祖 5.条件判断和循环 5.1 条件判断 5.2 循环 6.使用dict和set 6.1 dict 6.2 set 7.函数的使用 7.1函数返回多个值,同时接受多个值 7.2函数参数的默认值 7.3可变参数的函数 7.4可变个数带参数名的入参 7.5参数类型组合 8.关于函数递归 9.python的高级特性 9.1切片 9.2遍历 9.3列表生

Python -面向对象(一 基本概念)

一 Python简单介绍 Python是一个可移植的面向对象的脚本语言. Python尽管是一个脚本语言,但也是一个全然面向对象的语言. 由于它设计之初把易用性做为很重要的一个考量标准,所以用起来很简洁,优美(语法很灵活).所以使用Python能够高速地编写出可执行代码.与C/C++相比.Python程序的执行速度比較慢,一门语言既然能够生存下来.就有它自己的原因,Python语言也一样. 当今的计算机处理速度已经很快.对某些任务来说.执行速度并非首要考虑的因素.比方说为了实现数据库訪问的自己主

Python的面向对象3

接下来,我们接着讲Python的面向对象,在上一次的博客中,我们详细介绍了类与对象的属性,今天,我们来详细介绍一下面向对象中的方法! 1.定义实例方法 一个实例的私有属性就是以__开头的属性,无法被外部访问,但是,从类的内部是可以访问的,除了可以定义实例的属性,还可以定义实例的方法. 其实,实例的方法就是在类中定义函数,它的第一个参数永远是self,指向调用该方法的实例本身,其他参数和普通参数一致. get_name()就是一个实例方法,它的第一个参数是self,这个参数不需要显示传入 调用实例

个人理解的python的面向对象

在学习到python的面向对象的时候,发现python的类的的属性是有区分类的属性及对象的属性的,代码示例如下: class test: a = 'test' def test1(self,a): self.a = a def show(self): print(test.a) def show1(self): test.a = 'for test' print(test.a) t = test() t.a = 'zjc' t.test1('zjc')print(t.a) t.show() t.

六、定制数据对象(Python的面向对象) ----- 打包代码与数据

创建Python字典 python字典即为键值对,相当于Java中的map,其创建的两种形式: a = {} # 普通方式 b = dict() # 使用工厂函数 字典的赋值与访问 #创建字典 >>> cleese['Name'] = 'John Cleese' >>> cleese['Occupations'] = ['actor','comedian','writer','film producer'] >>> palin = {'Name':'M

Python 3面向对象编程

这篇是计算机类的优质预售推荐>>>><Python 3面向对象编程> 编辑推荐 本书不是Python 的入门书籍,适合具有Python 基础经验的开发人员阅读.如果你拥有其他面向对象语言的经验,你会更容易理解本书的内容. 内容简介 Python 是一种面向对象的解释型语言,面向对象是其非常重要的特性.本书通过Python 的数据结构.语法.设计模式,从简单到复杂,从初级到高级,一步步通过例子来展示了Python 中面向对象的概念和原则.本书不是Python 的入门书籍,

Python-面向对象(三 元编程)

译注:这是一篇在Stack overflow上很热的帖子.提问者自称已经掌握了有关Python OOP编程中的各种概念,但始终觉得元类(metaclass)难以理解.他知道这肯定和自省有关,但仍然觉得不太明白,希望大家可以给出一些实际的例子和代码片段以帮助理解,以及在什么情况下需要进行元编程.于是e-satis同学给出了神一般的回复,该回复获得了985点的赞同点数,更有人评论说这段回复应该加入到Python的官方文档中去.而e-satis同学本人在Stack Overflow中的声望积分也高达6