面向对象基础
面向对象编程(抽象)
对象:特征和技能的结合体
面向对象编程:一个个对象进行交互
优点:扩展性非常强
缺点:逻辑非常复杂
类与对象
类(类别):一系列具有相同特征和技能的对象
现实世界中先有对象,后有类
Python中先有类,再有对象
class 类名(驼峰体): # 定义类,会直接运行类体代码
# 定义一系列特征
# 定义一系列方法
对象1 = 类名() # 实例化出对象
给对象定制独有的特征
class OldBoyStudent:
school = 'oldboy'
def __init__(self, name ,age):
self.name = name
self.age = age
def choose_course(self):
print('is choosing course')
stu1 = OldBoyStudent('a',1)
stu1.school
stu2 = OldBoyStudent('b',2)
stu2.scool
对象的属性查找顺序
class OldBoyStudent:
school = 'oldboy'
name = 'c'
def __init__(self, name ,age):
self.name = name
self.age = age
def choose_course(self):
print('is choosing course')
stu1 = OldBoyStudent('a',1)
stu1.school
stu2 = OldBoyStudent('b',2)
stu2.scool
先从对象本身查找,然后从类中查找,类中也没有则报错
类与对象的绑定方法
class OldBoyStudent:
school = 'oldboy'
def __init__(self, name ,age):
self.name = name
self.age = age
def choose_course(self):
print(id(self)) # 10000
print(self.school)
print(f'{self.name} is choosing course')
stu1 = OldBoyStudent('a',1)
stu1.choose_course() # self是对象本身
print(id(stu1)) # 10000
OldBoyStudent.choose_course(stu1)
类与数据类型
lis = list([1,2,3])
lis2 = list([1,2,3])
lis.append(4)
# list.append(lis,4)
对象的高度整合
对象会有一大堆属性/数据,还会有一大堆方法来操作这些属性,然后对于不同的对象,这些属性又不同.