您的位置:首页 > 编程语言 > Python开发

我的python学习11-----------面向对象的思想理解

2018-03-09 22:33 281 查看
2018.03.09***********************************Day12**********************************

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...
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  it python 面向对象