Python面向对象介绍

一,面向对象介绍
面向过程编程
核心是过程二字,过程指的是解决问题的步骤,即先干什么、再干什么、最后干什么。。。
基于该思想编写程序就好比再设计一条流水线,是一种机械式的思维方式
 
优点:复杂的问题流程化、进而简单化
缺点:可扩扩展性差
 
面向对象编程:
核心对象二字,对象是特征(变量)与技能(函数)的结合体,
基于该思想编写程序就好比创造一个世界,你就是这个世界的上帝,
在上帝眼里一切存在的事物都是对象,任何不存在的对象也都可以造出来
是一种上帝式的思维方式
 
优点:扩展性强
缺点:编程的复杂度高
 
二,定义类,产生对象
类:如果说对象是特征与技能的结合体,那么类就是一系列对象相似的特征与技能的结合体
ps:站在不同的角度总结出的类是截然不同的
 
在现实世界中:一定是先有对象,再有分类的概念
 
在程序中,务必记住:一定要先定义类,后调用类来产生对象
 
在现实世界中(站在老男孩选课系统角度)
对象1:
特征
school='Oldboy'
name='李泰迪'
sex='male'
age=18
技能
选课
 
对象2:
特征
school='Oldboy'
name='牛榴弹'
sex='female'
age=38
技能
选课
 
对象3:
特征
school='Oldboy'
name='张随便'
sex='male'
age=38
技能
选课
 
对象4:
特征
name='Egon'
sex='male'
age=18
level=10
技能
打分
点名
 
现实世界中老男孩学生类
相似的特征
school='Oldboy'
相似的技能
选课
 
'''
#在程序中
#先定义类
class OldboyStudent:
school = 'Oldboy'
 
def choose_course(self):
print('is choosing course')
 
 
 
# 后调用类来产生对象,调用类的过程又称之为实例化
stu1=OldboyStudent() # stu1可称为一个对象,也可以称为一个实例
 
三,类和对象的使用
#在类定义阶段就会立刻执行类体代码,会产生类的名称空间,用于将类体代码执行过程中产生的名字都存放与类的名称空间中
class OldboyStudent:
    school = 'Oldboy'

    def choose_course(self):
        print('is choosing course')

    # print('====>')

#类有两种用途
#用途一:类本身就一个容器(名称空间),所以可以增删改查类的属性
# print(OldboyStudent.__dict__)
# print(OldboyStudent.__dict__['school'])
# print(OldboyStudent.__dict__['choose_course'])
# OldboyStudent.__dict__['choose_course'](123)

# print(OldboyStudent.school) #OldboyStudent.__dict__['school']
# print(OldboyStudent.xxx) #OldboyStudent.__dict__['xxx']
# print(OldboyStudent.choose_course)
# OldboyStudent.choose_course(123)

# OldboyStudent.country='China'
# OldboyStudent.school='Oldgirl'
# print(OldboyStudent.__dict__)
# del OldboyStudent.school
#
# print(OldboyStudent.__dict__)



#用途二:调用类来产生对象,调用类的过程又称之为实例化
x=1
class OldboyStudent:
    school = 'Oldboy'

    def choose_course(self):
        print('is choosing course')


stu1=OldboyStudent()  # stu1可称为一个对象,也可以称为一个实例
stu2=OldboyStudent()  # stu1可称为一个对象,也可以称为一个实例
stu3=OldboyStudent()  # stu1可称为一个对象,也可以称为一个实例




def init(obj,x,y,z):
    obj.name=x
    obj.sex=y
    obj.age=z

#对象1 独有的特征
# name = '李泰迪'
# sex = 'male'
# age = 18
# stu1.name='李泰迪'
# stu1.sex='male'
# stu1.age=18

init(stu1,'李泰迪','male',18)


#对象2 独有的特征
# name = '牛榴弹'
# sex = 'female'
# age = 38
# stu2.name='牛榴弹'
# stu2.sex='female'
# stu2.age=38

init(stu2,'牛榴弹','female',38)



#对象3 独有的特征
# name = '张随便'
# sex = 'male'
# age = 38

# stu3.name='张随便'
# stu3.sex='male'
# stu3.age=38

init(stu3,'张随便','male',38)


# print(stu1.__dict__)
# print(stu2.__dict__)
# print(stu3.__dict__)

# !!!!对象的属性查找是先从对象自己的名称空间中找,找不到则取类中查找。。。。,类中存放的数据是所有对象共有的,内存地址都一样
# print(stu1.x)
# print(stu1.school,id(stu1.school))
# print(stu2.school,id(stu2.school))
# print(stu3.school,id(stu3.school))

print(stu1.choose_course,id(stu1.choose_course))
print(stu2.choose_course,id(stu2.choose_course))
print(stu3.choose_course,id(stu3.choose_course))

  

 
posted @ 2018-05-28 13:28  cyh追梦寻  阅读(156)  评论(0)    收藏  举报