面向对象
面向过程
面向过程:就是机械的思维方式,先干什么,在干什么,最后干什么,其核心就是过程
代码案例,实现面向过程的例子:
1.接受用户名和密码
2.做逻辑处理,验证参数
3.将数据写入文件中
优点:把复杂的问题简单化,进而流程化
缺点:扩展性差
使用场景: 对扩展性要求不高的地方,一般使用面向过程
面向对象
面向对象的核心就是‘对象’。
对象:特征与功能的结合体
优点:扩展性强
缺点:编程复杂度变高了
使用场景:一般用在对扩展性要求较高的地方
类的定义和对象的产生
类:就是一系列相似的特征和相似的技能的结合体
在程序中:
必须先定义类,在调用类产生对象
# 给学生类定义一个属性和方法 class student(): school = 'SH' # school 就是一个属性,属性就是变量 counntry = 'China' # 在类里面定义的函数叫方法 def choose_course(stu_dict,course): stu_dict["courses"].append(course) print("%s选择了%s成功,%s" % (stu_dict["name"], course, stu_dict["courses"])) def func(self): pass # print("helloworld") # print("helloworl1111d")
"函数如果不调用,不会调用函数体代码。"
定义类发生的事情:
1. 类一旦被定义,会立马执行类体代码
2.类一旦定义完成,会产生类的名称空间,会将类中的名字放在类的名称空间去
3.会把类的名称空间绑定给__dict__属性。
如何查看类的名称空间:类名.__dict__
eg: print(Student.__dict__)
如何产生对象:在程序中,必须先定义类,然后调用类产生对象
如何调用类:类名()
eg: stu = Student() # 得到的结果stu为一个对象
如何查看对象的名称空间: 对象名.__dict__
eg:print(stu.__dict__) # 调用类产生对象,得到的是一个空对象,其实就是空字典
“““ 每调用一次类,都会产生一个对象,并且产生的对象之间是相互独立,互不影响的”””
调用类的过程也是实例化的过程,得到的结果就是一个实例
定制对象自己独有的属性
class Student(): # school就是一个属性 school = 'SH' # 属性就是变量 # __init__这个函数名不能改名字,必须叫这个名字,一点都不能差 def __init__(stu_obj, name, age, gender, salary): stu_obj.name = name # stu.__dict__['name'] = 'kevin' stu_obj.age = age # stu.__dict__['age'] = '18' stu_obj.gender = gender # stu.__dict__['gender'] = 'male' stu_obj.salary = salary # stu.__dict__['salary'] = '1800'
怎么得到一个对象
调用类会自动的触发类里面的__init__方法,然后会把得到的对象本身当成第一个参数自动传递
"""__dict__开头的属性或者方法都有他自己的特殊含义,一般不建议使用"""
名字的查找顺序(重点)
属性的查找顺序分两大类:
类属性:在类里面定义的属性就是类属性
查看:print(Student.school)
增加:Student.x = 'a'
Student.y = 'b'
改:Student.x = 10
删除; del Student .school
print(Student.dict__)
对象属性:就是对象自己独有的属性
print(stu.__dict__)
查看: print(stu.__dict__['name'])
print(stu.__dict__['age'])
print(stu.__dict__['gender'])
或者:
print(stu.name)
print(stu.age)
print(stu.gender)
stu.school = 10
print(stu.__dict__)
"""这是个特殊的:对象属性的查找顺序是:先在自己对象的名称空间中查找,如果找不到再去产生这个对象的类中取找,如果找不到,就报错"""
增加:stu.x = 1
改:stu.x = 10
删除:del stu.school
print(stu.__dict__)
标签:__,.__,stu,对象,面向对象,dict,print From: https://www.cnblogs.com/Lucky-Hua/p/17503146.html