python中类的创建和使用(Python自学从入门到实践)
python中类的创建和使用(Python自学从入门到实践)设想一下如果没有 新增的方法,可以实现这个新增的类属性里吗?class Car: '''一次模拟汽车的简单尝试''' def __init__(self make model year): '''初始化描述汽车的属性''' # 里面传递了3个形参 self.make=make self.model=model self.year=year # 完成了类的属性设置后,就要设置类的方法了。 def get_descriptive_name(self): '''返回整洁的描述性信息''' # 这是类的方法,在
在上一章我们大概了解了什么是类,什么是类的对象,
总结一下:
1;类=属性 方法,
2;有了属性和方法就可以生产出类的实例化
3;类的实例化就是对象,可以生产出不同的对象,每个对象都对应一个变量。
4;变量可以调用类的属性 和 类的方法。
这章继续学习使用类以及修改类的对象。
class Car:
'''一次模拟汽车的简单尝试'''
def __init__(self make model year):
'''初始化描述汽车的属性'''
# 里面传递了3个形参
self.make=make
self.model=model
self.year=year
# 完成了类的属性设置后,就要设置类的方法了。
def get_descriptive_name(self):
'''返回整洁的描述性信息'''
# 这是类的方法,在方法里传递了 类的属性
long_name=f"{self.year} {self.make} {self.model}"
return long_name.title()
# 类的实例化,就是说,这个类Car的工程,制作出了一辆车,
# 车的名字是;my_new_car
my_new_car=Car('audi' 'a4' '2019')
# 实例化对象,调用了 get_descriptive_name 这个方法。
print(my_new_car.get_descriptive_name())
给属性指定 默认值,不在形参里体现
设想一下如果没有 新增的方法,可以实现这个新增的类属性里吗?
也是可以实现的,也就是说通过类实例化出来的对象,可以调用类里面的方法,也可以调用类的属性!!非常的灵活!
修改属性的值:
1;直接修改
这个不难理解,说明可以在调用属性的时候,通过类的实例化直接修改。
2;通过方法修改:
这种方法就是新建一个类的方法并且把上一个方法放到这个方法里面,调用的时候就变成自动变化值了。
3:在方法里增加if条件进行判断:
注意第19行,对第8行的数据进行判断,这里学的是如何在方法里使用if语句。
class Car:
'''一次模拟汽车的简单尝试'''
def __init__(self make model year):
'''初始化描述汽车的属性'''
self.make=make
self.model=model
self.year=year
self.odometer_reading=0
def get_descriptive_name(self):
'''返回整洁的描述性信息'''
long_name=f"{self.year} {self.make} {self.model}"
return long_name.title()
def read_odometer(self):
'''打印一条指出汽车里程的消息。'''
print(f"This car has {self.odometer_reading} miles on it.")
def update_odometer(self mileage):
'''将里程表读书设置为指定的值
禁止将里程表读数往回调'''
if mileage >= self.odometer_reading:
self.odometer_reading=mileage
else:
print("You can't roll back an odometer!")
# 类的实例化,就是说,这个类Car的工厂,制作出了一辆车,
# 车的名字是;my_new_car
my_new_car=Car('audi' 'a4' '2019')
# 实例化对象,调用了 get_descriptive_name 这个方法。
print(my_new_car.get_descriptive_name())
my_new_car.update_odometer(23)
my_new_car.read_odometer()
4:通过方法对属性的值进行递增,注意;这里是对属性的值进行修改,不是方法的。
class Car:
'''一次模拟汽车的简单尝试'''
def __init__(self make model year):
'''初始化描述汽车的属性'''
self.make=make
self.model=model
self.year=year
self.odometer_reading=0
def get_descriptive_name(self):
'''返回整洁的描述性信息'''
long_name=f"{self.year} {self.make} {self.model}"
return long_name.title()
def read_odometer(self):
'''打印一条指出汽车里程的消息。'''
print(f"This car has {self.odometer_reading} miles on it.")
def update_odometer(self mileage):
'''将里程表读书设置为指定的值
禁止将里程表读数往回调'''
if mileage >= self.odometer_reading:
self.odometer_reading=mileage
else:
print("You can't roll back an odometer!")
def increment_odometer(self miles):
'''将里程表读书增加指定的量。'''
self.odometer_reading =miles
# 类的实例化,就是说,这个类Car的工程,制作出了一辆车,
# 车的名字是;my_new_car
my_new_car=Car('audi' 'a4' '2019')
# 实例化了一个类,名字是:my_used_car
my_used_car=Car('subaru' 'outback' '2015')
# 实例化对象,调用了 get_descriptive_name 这个方法。
print(my_used_car.get_descriptive_name())
# 定车时候公里数23500
my_used_car.update_odometer(23_500)
my_used_car.read_odometer()
# 买车的时候多加了100公里,实现的办法见23行的 方法。
my_used_car.increment_odometer(100)
my_used_car.read_odometer()
表面上看代码的行数增加了很多,但真正要增加一个新的实例化对象时 只需要改动几个参数,或增加一行方法 结果就可以完全不同。这就是学会类以后可以大大的提高代码运行效率,节约时间。 先试着敲里面的代码,慢慢理解。