标签:__ stu Python 面向对象 对象 面向 Student shool course
面向过程:
像流水线炒菜一样一步一步来,先洗,再切,然后放油、葱姜蒜、主材、各种调料。
虽然也可以事先把各种材料都准备好(写函数),可最后还是不能先放主材再放油(步骤不能乱)。
优点是 过程清楚,一步一步来就行,
缺点是 修改太麻烦,一个小功能可能就要全局修改(数据、参数调用涉及多个函数和流程)
函数与对象:
函数:某种功能的实现过程
对象:某些数据和功能的结合体,共同实现某些功能
面向对象:
对象:具有某种特征(数据)和功能(方法)的集合
类: 某些具有相似特征和功能的多个对象的合集
优点:扩展性强,可维护性强
缺点:复杂度高,难度大
类与对象的生产顺序:
程序中:先有类,后有对象;先定义类的共有属性和方法,后产生对象的不同属性和方法
生活中:先有对象,后有类。
定义类:
class 类名():
print('This is a class')
1、类被定义后,会立即执行
2、产生一个命名空间,生成相应的数据和方法
3、把类的名称空间,绑定给__dict__ , 类.__dict__可以查看类所拥有的各种属性
**类和对象,都是一个大字典
4、类名一般首字母大字
例:
class Student():
shool = 'SH' # 共有属性
def choose_course(stu_dict,course): # 定义一种功能
stu_dict['course'] = course
print('%s成功选择了%s课程'%(stu_dict['course'],course))
给对象定制独有的属性:
class Student():
shool = 'SH' # 这个还是共有的
def __init__(self,name,age,gender,course=None): # 实例化对象时,生成对象属性和方法
if course == None:
course = []
self.name = name
self.age = age
self.gender = gender
self.course = course
实例化一个对象时:
1、产生一个命名空间
2、在命名空间中产生一个空对象(大字典,)
3、调用类的__dict__(或__init__功能)(self,name,age,gender等属性和方法)
4、把空对象绑定一个对象名,得到一个初始化了的结果。
例:
stu = Student('ly',18,'男')
属性的查找顺序:
先找自己的,自己的没有再找共同的,
比如shool,stu没有自己的shool,那么就会去找Student里面的shool
就像函数的局部命名空间中没有某个变量的值,就会去上一层函数或者全局中找一样
属性的增、删、改、查:
类的:类名.属性
增:
Student.country = 'China'
删:
del Student.country
改:
Student.shool = 'BJ'
查:
print(Student.shool)
实例化对象的:对象名.属性
增:
stu.country = 'China'
删:
del stu.country
改:
stu.name = 'Jason'
查:
print(stu.name)
方法的调用:
类中的方法,类和对象都可以调用,推荐使用对象来调用
类调用:类名.方法(参数)
对象调用:对象名.方法(参数)
判断对象是不是某个类的实例:
if isinstance(stu,Student):
print("I`m a student")
else:
print('I`m not a student')
标签:__,stu,Python,面向对象,对象,面向,Student,shool,course 来源: https://www.cnblogs.com/qiubuyu/p/15635553.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。