面向对象基础
目录
面向对象基础
一:类
对象是属性(特征),与技能的结合体,而类就是一系列对象的属性和技能的结合。
如何定义类
先定义类,后调用类创造对象。
定义的语法
class 类名:
对象相同的属性(特征)
对象相同的技能
class:用于定义类,class后跟的是类名
类名:
类的名字用来调用创造对象
注意:
类名必须要遵循驼峰命名法,python在定义变量时不推荐使用,但在定义类时推荐使用
在定义类发生的事情:
1.类在定义时,会产生一个空的名称空间
2.会把类内的所有名字,扔进名称空间
注意:
类在定义阶段就已经产生好了名称空间,执行python文件时会执行类内部的代码
再定义阶段,类内部的
调用类发送的事情
- 首先会产生一个空的对象,就是产生”对象的名称空间”
- 会自动触发__init__
- 会把对象本身及括号内的参数一并传给__init__函数
总结:
调用类会产生一个对象,调用类的过程叫做类的实例化,产生的对象称之为类的一个实例.
# 学生类
class OldboyStudent:
# 若__init__中有self以外的参数,调用类时必须在括号内传入参数。
def __init__(self, name, age, sex): # self --> 就是对象本身 x = 高峰峰 y=93 z=female
# print(self, name, age, sex)
# print('此处时__init__。。。。')
# 给对象添加特征的方式二:
self.name = name
self.age = age
self.sex = sex
# 特征
school = 'oldboy'
# print('tank is handsome...')
# 技能
def learn(self):
print('learn python...')
def choose_course(self): # self = None
print('choose_course ....')
stu1 = OldboyStudent('高峰峰', 93, 'female') # OldboyStudent()---> 学生对象
stu2 = OldboyStudent('小丁丁', 84, 'female') # OldboyStudent()---> 学生对象
stu3 = OldboyStudent('大丁丁', 18, 'male') # OldboyStudent()---> 学生对象
# 给对象添加属性的方式一:
# print(stu1.name)
# stu1.name = '高峰峰'
# stu1.age = 93
# stu1.sex = 'female'
# print(stu1.name, stu1.age, stu1.sex)
print(stu1.name, stu1.school)
二:对象
对象是属性(特征),与技能的结合体
产生对象语法:
类名+()调用类产生对象。
名称空间的产生:
- 类的名称空间在定义阶段就已经产生
- 对象名称空间,在调用类时产生
__init__:
在内部定义__init__函数
__init__:会在调用类时,自动触发该函数
查看类的名称空间
print(类名.__dict__)
查看对象的名称空间
print(对象.__dict__)
三:对象与类的查找顺序
对象:先从对象本身中找,如果有则优先查找对象自己,若没有,则去类中找,若没有则报错
类:从类中找,若没有则报错,不会到对象中查找
四:对象绑定方法的特殊之处
类内部的函数主要是给对象用
- 由类来调用类的内部函数,该函数只是一个普通的函数,需要接收几个参数就得传入几个参数
- 由对象来调用称之为对象的绑定方法,不同的对象调用该绑定方法,则会将不同的对象传入该绑定方法中