Atopos

导航

面向对象

image

1.对象的含义

就是存放数据和函数的容器
image

2.对象的优缺点

优点:扩展性强,可维护性高
缺点:编程复杂性高

image

3.对象示例

def choose_course(stu_dict,course):
	stu_dict['course'].append(course)
	print('%s选课成功 %s'%(stu_dict['name'],stu_dict['course']))

stu1 = {
		'name':'jason',
		'age':18,
		'gender':'male',
		'course':[],
		'choose_course':choose_course
	}

stu1['choose_course'](stu1,'python')

image

4.类的定义和对象的产生

4.1类的定义
一系列对象相似的特征与相似的技能的结合体

4.2类的语法句式

class 类名():
    pass
注意:类名一般首字母大写

4.3定义类时类内部发生什么

4.3.1 立即执行类体代码
4.3.2 产生一个类的名称空间,把类体里面执行的名字都放到名称空间里
4.3.3 把类的名称空间绑定给__dict__
4.3.4 类名.__dict__可以查看名称空间

4.4对象的产生
在程序中必须先定义类
然后调用类产生对象(先有类再产生对象)
默认产生的是一个空对象{}

4.5示例

class Student():
	# 定义一个数据属性
	school = 'SH'
	# 定义一个技能(函数)属性
	def choose_course():
		stu_dict['course'].append(course)
		print('%s选课成功%s'%s(stu_dict['name'],stu_dict['course']))

# 调用类产生对象 默认产生的就是一个空对象{}
stu1 = Student()
# 查看类的名称空间
print(Student.__dict__)
# 查看对象的名称空间
print(stu1.__dict__)

image

5.给对象制定自己独有的属性

5.1示例

class Student():
	# 定义一个数据属性
	school = 'SH'
	# 定义一个调用类自动触发的函数
	# 该函数不是一定要定义,需要用到就定义,不用刻意定义
	def __init__(stu_obj,name,age,gender):
		# 空对象.name = name
		stu_obj.name = name
		stu_obj.age = age
		stu_obj.gender = gender
		# 没有返回值
		
	# 定义一个技能(函数)属性
	def choose_course(stu_dict,course):
		stu_dict['course'].append(course)
		print('%s选课成功%s'%(stu_dict[name],stu_dict[course]))

stu1 = Student('jason',18,'male')
print(stu1.name) # jason

5.2调用类发生了什么

5.2.1得到一个空对象
5.2.2调用类 类名.__dict__(空对象,参数...)
5.2.3得到一个初始化的结果(对象)

image

6.属性的查找顺序

6.1示例
class Student():
	# 定义一个数据属性
	school = 'SH'
	
	def __init__(self,name,age,gender,course=None):
		if course is None:
			course = []
		self.name = name
		self.age = age
		self.gender = gender
		self.course = course
		
	def choose_course(self,course):
		self.course.append(course):
			print('%s选课成功%s'% (self.name,self.course))
			
	def func(self,name,age):
		pass
属性的查找:
先从对象自己的名称空间查找,然后再去产生对象的类的名称空间去找

6.2类和对象属性的增删改查

6.2.1类的属性增删查
1.查找
print(Student.school) # SH
2.增加
Student.country = 'china'
3.修改
Student.school = 'BJ'
4.删除
del Student.school

6.2.2对象的属性增删改查
1.查找
print(stu.name) # jason
2.增加
stu.hobby = 'read'
3.修改
stu.name = 'ly'
4.删除
del stu.name

6.3类方法的调用
类中的方法 类自己可以调用 对象也可以调用

6.3.1类调用方法
# 类调用方法 函数括号里的参数有几个就要传几个参数
Student.choose_course(stu,'python') 

6.3.2对象调用方法
# 函数调用方法 会把自己当作第一个参数传给函数
stu.choose_course('python') # stu.choose_course(stu,'python')

image

posted on 2021-12-02 19:35  Atopos_q  阅读(11)  评论(0编辑  收藏  举报