Python面向对象编程:
class编程
类中的函数称为方法
修改属性的值:
1.直接修改属性的值:在实例中直接访问并修改即可:
# 以上代码省略
my_new_car.read_odometer = 23
2.通过方法修改:在类中定义一个方法,将要修改的属性传给方法,在方法中指定操作即可实现对属性的值的修改
3.通过方法对属性的值进行递增:实质上和第二个做法本质一样,是第二个方法的子集,只不过这个修改较于第二个更具体化,通常为了满足一些程序的特殊要求,采取这个做法
给属性指定默认值:
指定的默认值不需要在__init__()
内声明形参,直接在方法体内定义即可:
def __init__(self·····):
self.make = make
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
def read_odometer(self):
print(f"Tis car has {self.odometer_reading} miles on it.")
def update_odometer(self, mileage):
self.odometer_reading = mileage
car = Car('subaru', 'wrx sti', 2019)
car.update_odometer(23)
car.read_odometer()
通过方法对属性的值进行递增:
class Car:
def __init__(self, make, model, year):
self.make = make
self.model = model
self.year = year
self.odometer_reading = 100
def get_descriptive_name(self):
long_name = f"{self.year} {self.make} {self.model}"
return long_name
def read_odometer(self):
print(f"Tis car has {self.odometer_reading} miles on it.")
def update_odometer(self, mileage):
if mileage >= self.odometer_reading:
self.odometer_reading = mileage
else:
print("Get the fuck ou off here.")
def increment_odometer(self, miles):
self.odometer_reading += miles
car = Car('subaru', 'wrx sti', 2019)
print(car.get_descriptive_name())
car.update_odometer(23500)
car.read_odometer()
car.increment_odometer(100)
car.read_odometer()
class—— pratice
项目一:登录系统
创建一个User
类,属性为first_name
和last_name
,自行设计方法,每次尝试登陆操作调用一次方法,最后调用结束输出用户的信息(包括登陆的尝试次数):
class User:
def __init__(self, first_name, last_name):
self.first_name = first_name
self.last_name = last_name
self.login_attempts = 0
def describe_user(self):
full_name = f"{self.first_name.title()} {self.last_name.title()}"
print(Full_name)
print(self.login_attempts)
def greet_user(self):
print(f"Hello, {full_name}, It's nice to meet you.")
def increment_login_attempts(self):
self.login_attempts += 1
def reset_login_attempts(self):
self.login_attempts = 0
user = User('tommy', 'vercetti')
print(user.login_attempts)
user.increment_login_attempts()
user.increment_login_attempts()
user.increment_login_attempts()
print(user.login_attempts)
user.reset_login_attempts()
项目二:餐厅统计系统
创建一个Restaurant
类,用来表述餐厅客人的情况,自行创建方法,要求能设置就餐人数,调用方法传递值并打印出来
要求创建的方法能令人数递增
**class Restaurant:
def __init__(self, restaurant_name, cuisine_type):
self.restaurant_name = restaurant_name
self.cuisine_type = cuisine_type
self.number_served = 500
def describe_restaurant(self):
print(f"Our restaurant name is {self.restaurant_name}.")
print(f"Our restaurant cuisine's type is {self.cuisine_type}")
print(f"Right now, about {self.number_served} people eat in there.")
def open_restaurant(self):
print("It's still open now.")
def set_number_served(self, number):
self.number_served += number
restaurant = Restaurant('KFC', 'FAST-FOOD')
restaurant.set_number_served(100)
restaurant.describe_restaurant()