我的python学习11-----------面向对象的思想理解
2018-03-09 22:33
281 查看
2018.03.09***********************************Day12**********************************
AUTHOR: wills
定义类需要做两件事:数据抽象 and 行为抽象
形成一个逻辑整体,即对象,将来任何时候要使用这种对象时复用
这个类就好了
在上面一段代码中,Student表示类名,而stu1表示一个实际的对象.
stu1对象有自己的名字属性‘wills’,以及自己的年龄属性‘age’,还有自己的行为study()函数。
在c++语言中还有private和public,protected关键字,表示属性或者函数是否允许外界调用或者继承,python里面
没有这种关键字,不过可以像self._age一样在加一个下划线表示保护,这里我也理解不是很清楚,
究竟python是怎么实现保护的,现在我只是知道了有这种用法。
至于先有类还是先有对象,我认为应该是先有对象,因为我们解决问题不管过程如何,最终结果
都是对象去执行完成的。之所以要定义类,只是为了方便把这些有相同属性的对象放在一起,如果出现了
同样的问题,就可以不用重新想办法,以前这个类的对象怎么干的,现在也怎么干就好了
AUTHOR: wills
面向对象编程
一切事物都是对象(不管抽象还是具体)
类有静态属性,动态特征
STEP 1. 定义类
类是对象的蓝图和模板,有了类就可以创建对象定义类需要做两件事:数据抽象 and 行为抽象
数据抽象 – 抽取对象共同的静态特征(名词)–》它表示对象的某种属性
行为抽象 – 抽取对象共同的动态特征(动词)–》 它表示对象的某种方法
定义类关键字 - - - class – 类名要求首字母大写(驼峰命名法)
我们定义一个类实际就是把数据属性和操作数据的函数绑定在一起形成一个逻辑整体,即对象,将来任何时候要使用这种对象时复用
这个类就好了
class Student(object): # 构造方法(又叫构造器/构造子 - constractor) def __init__(self,name,age): # 在这里给对象绑定属性 self.name = name self._age = age # 我们定义一个方法就代表,对象可以接收这个消息 # 对象的方法(函数)的第一个参数都是统一写成**self**(c++里面同样写法的是this) # self代表了接收消息的对象 --即可以写成 对象.消息 的形式 def study(self,course): return '%s is studing %s...' % (self.name,course) def __str__(self): return 'name= %s,age=%d' % (self.name,self._age) stu1 = Student('wills',15) print(stu1) print(stu1.study('math'))
在上面一段代码中,Student表示类名,而stu1表示一个实际的对象.
stu1对象有自己的名字属性‘wills’,以及自己的年龄属性‘age’,还有自己的行为study()函数。
在c++语言中还有private和public,protected关键字,表示属性或者函数是否允许外界调用或者继承,python里面
没有这种关键字,不过可以像self._age一样在加一个下划线表示保护,这里我也理解不是很清楚,
究竟python是怎么实现保护的,现在我只是知道了有这种用法。
STEP 2 . 调用构造方法构造学生对象
实际上是调用的Student类中的init(self,*args)方法实现的
...... stu1 = Student('wills',15) print(stu1.study('math'))
STEP 3 . 给对象发消息
通过给对象发消息,从而让对象完成某种工作
解决任何问题都是通过给对象发消息,然后让对象去完成
这就是面向对象的思想,让对象来做事
所有有了这个思想后,在我的理解里面,有相同属性和行为的对象就可以构成一个类至于先有类还是先有对象,我认为应该是先有对象,因为我们解决问题不管过程如何,最终结果
都是对象去执行完成的。之所以要定义类,只是为了方便把这些有相同属性的对象放在一起,如果出现了
同样的问题,就可以不用重新想办法,以前这个类的对象怎么干的,现在也怎么干就好了
class Student(object): def __init__(self,name,age): self.name = name self.age = age def study(self,course): return '%s is studing %s...' % (self.name,course) def __str__(self): return 'name= %s,age=%d' % (self.name,self.age) stu1 = Student('wills',15) print(stu1) print(stu1.study('math'))
name= wills,age=15 wills is studing math...
相关文章推荐
- 【python学习笔记】Python面向对象的理解(封装,继承,多态)
- python 学习笔记-面向对象的理解
- Python学习(11)字典
- Python学习笔记(11):类的继承
- java学习日记_9:面向对象的概念以及思想
- 【IOS 开发学习总结-OC-11】★objective-c面向对象之——封装和访问控制符
- 学习python的第四十六天-第八章 面向对象
- python学习:面向对象
- Python学习笔记——面向对象3
- 黑马程序员_学习笔记2交通灯系统中面向对象思想的理解以及工厂模式的应用
- python------对于面向对象的理解
- python学习笔记-(11)python中的文件相关
- 11、TX2学习笔记--OpenCV3.2+OpenCV_contrib3.2+CUDA8.0+python3.5安装
- 【python学习】之四、面向对象之续
- python学习笔记(面向对象)
- Object-c 学习之面向对象的理解
- python基础教程_学习笔记11:魔法方法、属性和迭代器
- Python学习笔记11
- Python面向对象的学习08
- Python学习系列之面向对象