Python100天之day11
面对着突入袭来的疫情感觉自己很渺小!唯一的愿望就是希望世界上的疫情都消失,让我再次过上不快不慢的生活!希望家人们健康平安,事事顺利!!!我们中华儿女一定会渡过难关!!!
那么下面就进入我们的学习环节,今天给大家讲讲面对对象的编程基础!
面对对象的编程
引言
私人见解:我们生活中有着各种各样的生活场景,大家有没有想过我们怎么样去用python去描述出来呢?今天我们介绍的面对对象的编程就可以编写表示现实世界中的事物和情景的累,并且基于这些类来创建对象。编写类的时候,可以定义一个大类去描述对象都有的通用行为。我们在类的基础上再去创建对象时,使得每个对象都会具备这种通用行为,然后我们再根据情境的需要对独特的对象进行复制。
官方见解:“把一组数据结构和处理它们的方法组成对象(object),把相同行为的对象归纳为类(class),通过类的封装(encapsulation)隐藏内部细节,通过继承(inheritance)实现类的特化(specialization)和泛化(generalization),通过多态(polymorphism)实现基于对象类型的动态分派。”
最后希望大家能用面对对象的编程去描述我们热爱的世界吧!!!
创建和使用类
定义类
- 在Python中,可以使用class对类进行定义。
- 在Python中,首字母大写的的名称指的是。
- 在类的定义中,关于类的定义的()里面是空的。
方法__init__()
- 在类中的函数我们把它们叫做方法。我们之前学的有关函数的一切都是适用于方法。
- init()是一个比较特殊的方法,每次我们根据类创建实例时,Python都会自动的运行它。
- 大家会问开头和末尾各有两个下划线他们有什么用?其实这是一种约定,用来避免于Python默认方法发生名称冲突
- init()在初始化属性时一定会包含self形参,而且self必须放在其他形参的前面,当我们在创建实例的时候,self会把我们把一开始初始化的属性传入实例中。
- 以self为前缀的变量都可以供类中的所有方法使用,类似于self.变量名=形参的值可以通过实例访问的变量我们称之为属性。
例子
class Student():
def __init__(self,name,age):
self.name = name
self.age = age
def study(self,course_name):
print('%s正在学习%s.' % (self.name, course_name))
def sport(self,sport_name):
print('%s最喜欢的运动是%s' % (self.name,sport_name))
def food(self,food_name):
print('%s最喜欢吃%s' % (self.name,food_name))
def student(self):
if self.age < 7:
print('%s是幼儿园的小朋友.' % self.name)
elif self.age < 12:
print('%s是个小学生' % self.name)
elif self.age < 15:
print('%s是个初中生' % self.name)
elif self.age < 18:
print('%s是个高中生' % self.name)
elif self.age < 22:
print('%s是个大学生啦!!' % self.name)
else :
print('恭喜你毕业了!')
def love_person(self,person):
print('%s喜欢%s' % (self.name,person))
根据类创建实例
jack = Student('Jack',21)
访问属性
print("Jack's age is %d" % jack.age)
调用方法
jack.student()
jack.love_person('Rose')
jack.sport('篮球')
jack.food('牛胸骨面')
jack.study('Python')
创建多个实例
jack = Student('Jack',21)
rose = Student('Rose',20)
print("Jack's age is %d" % jack.age)
print("Rose's age is %d" % rose.age)
#---------Jack----------
jack.student()
jack.love_person('Rose')
jack.sport('篮球')
jack.food('牛胸骨面')
jack.study('Python')
#---------Rose----------
rose.student()
rose.love_person('Jack')
rose.sport('瑜伽')
rose.food('火龙果加酸奶')
rose.study('心理学')
使用类和实例
定义一个车类,它储存了有关汽车的信息。
class Car():
#"""一次模拟汽车的简单尝试"""
def __init__(self, make, model, year):
#"""初始化描述汽车的属性"""
self.make = make
self.model = model
self.year = year
def get_descriptive_name(self):
#"""返回整洁的描述性信息"""
long_name = str(self.year) + ' ' + self.make + ' ' + self.model
return long_name.title()
my_new_car = Car('宝马', '七系', 2022)
print(my_new_car.get_descriptive_name())
给属性添加指定的默认值(在设置默认值时,在__init__()无需包含为它提供初始值的形参)
class Car():
#"""一次模拟汽车的简单尝试"""
def __init__(self, make, model, year):
#"""初始化描述汽车的属性"""
self.make = make
self.model = model
self.year = year
self.odometer_reading = 0
def read_odometer(self):
# """打印一条指出汽车里程的消息"""
print("This car has " + str(self.odometer_reading) + " miles on it.")
def get_descriptive_name(self):
#"""返回整洁的描述性信息"""
long_name = str(self.year) + ' ' + self.make + ' ' + self.model
return long_name.title()
my_new_car = Car('宝马', '七系', 2022)
print(my_new_car.get_descriptive_name())
my_new_car.read_odometer()
修改属性的值
直接修改属性的值
my_new_car.odometer_reading = 23
my_new_car.read_odometer()
通过方法修改属性的值
def update_odometer(self, mileage):
"""将里程表读数设置为指定的值"""
self.odometer_reading = mileage
my_new_car.update_odometer(23)
my_new_car.read_odometer()
通过方法进行递增(增加特定的值)
def increment_odometer(self, miles):
"""将里程表读数增加指定的量"""
self.odometer_reading += miles
my_used_car = Car('subaru', 'outback', 2013)
my_used_car.update_odometer(23500)
my_used_car.read_odometer()
my_used_car.increment_odometer(100)
my_used_car.read_odometer()
###完整代码
class Car():
#"""一次模拟汽车的简单尝试"""
def __init__(self, make, model, year):
#"""初始化描述汽车的属性"""
self.make = make
self.model = model
self.year = year
self.odometer_reading = 0
def read_odometer(self):
# """打印一条指出汽车里程的消息"""
print("This car has " + str(self.odometer_reading) + " miles on it.")
def update_odometer(self, mileage):
"""将里程表读数设置为指定的值"""
self.odometer_reading = mileage
def get_descriptive_name(self):
#"""返回整洁的描述性信息"""
long_name = str(self.year) + ' ' + self.make + ' ' + self.model
return long_name.title()
def increment_odometer(self, miles):
"""将里程表读数增加指定的量"""
self.odometer_reading += miles
my_new_car = Car('宝马', '七系', 2022)
print(my_new_car.get_descriptive_name())
my_new_car.read_odometer()
my_new_car.odometer_reading = 23
my_new_car.read_odometer()
my_new_car.update_odometer(23)
my_new_car.read_odometer()
my_used_car = Car('subaru', 'outback', 2013)
my_used_car.update_odometer(23500)
my_used_car.read_odometer()
my_used_car.increment_odometer(100)
my_used_car.read_odometer()