《Python编程从入门到实践》——动手试一试
类的基本操作
书本142页
self!!!!!!!
哪个对象调用了方法,方法里的self指的就是谁。
通过 self.属性名 可以访问到这个对象的属性。
通过 self.方法名() 可以调用这个对象的方法。
概念辨析:
xxx,zzz叫属性,__init __ (self, xxx,zzz)。(可以被下面封装的函数调用的对象)
def open_resturant(self) (被封装的函数就叫方法)
实例(a = Restaurant(‘KFC’, ‘fresh’))则指生成的类对象
类方法是指类中的函数方法
类实例则指生成的类对象
class myclass:
def _ init_ (self):
pass
def p(self):
print(‘hehe’)
obj = myclass()
obj .p()
obj就是实例
p()就是方法
Alt+Shift+E 加选中的部分 即可分段执行下面的代码。
#9-1,9-2,9-3
#9-1
class Restaurant():
#创建了餐厅的类,创建一段内存空间
def __init__(self, restaurant_name, cuisine_type):
self.restaurant_name = restaurant_name
self.cuisine_type =cuisine_type
#初始化属性name type
def describe_resturant(self):
print(self.restaurant_name + ' ' +self.cuisine_type)
def open_resturant(self):
print("Resturant is opening.")
a = Restaurant('KFC', 'fresh')#让变量a1也指向创建好的内存空间
a.describe_resturant()#调用类中函数
a.open_resturant()
#9-2
a = Restaurant('KFC', 'fresh')#给餐厅类传参
b = Restaurant('Mcdonald', 'fry')#给餐厅类传参
c = Restaurant('BIUbiu', 'cool')#给餐厅类传参
a.describe_resturant()
b.describe_resturant()
c.describe_resturant()
#9-3
class User():
def __init__(self, first_name, last_name):
self.first_name = first_name
self.last_name = last_name
def describe_user(self):
print(self.first_name.title() + ' ' + self.last_name.title())
def greet_user(self):
print('Hello! ' + self.first_name.title() + ' ' + self.last_name + '.')
a = User('Trummp', 'donald')
a.describe_user()
a.greet_user()
###
KFC fresh
Resturant is opening.
KFC fresh
Mcdonald fry
BIUbiu cool
Trummp Donald
Hello! Trummp donald.
#9-4, #9-5
#9-4
class Restaurant():
#创建了餐厅的类,创建一段内存空间
def __init__(self, restaurant_name, cuisine_type):
self.restaurant_name = restaurant_name
self.cuisine_type = cuisine_type
self.number_served = 0
#初始化属性name type
def describe_resturant(self):
print(self.restaurant_name + ' ' +self.cuisine_type)
def open_resturant(self):
print("Resturant is opening.")
def set_number_served(self,):
print(f"There are {self.number_served} are been served.")
def increment_number_served(self, increase):
self.number_served += increase
a = Restaurant('KFE', 'fry')
a.set_number_served()
a.number_served = 19
a.set_number_served()
a.increment_number_served(10)
a.set_number_served()
#9-5
class User():
def __init__(self, first_name, last_name, login_attemps):
self.first_name = first_name
self.last_name = last_name
self.login_attemps = login_attemps#可以理解成给self的形参赋予传入的值
def describe_user(self):
print(self.first_name.title() + ' ' + self.last_name.title())
def greet_user(self):
print('Hello! ' + self.first_name.title() + ' ' + self.last_name + '.')
def increase_login_attemps(self):
self.login_attemps += 1
def set_login_attemps(self):
self.login_attemps = 0
a = User('Trummp', 'donald', 6)#实例
a.increase_login_attemps()
a.increase_login_attemps()
print(a.login_attemps)
a.set_login_attemps()
print(a.login_attemps)
###
There are 0 are been served.
There are 19 are been served.
There are 29 are been served.
8
0
#9-6,9-7,9-8,9-9
继承的实例
class 父类():
def __init__(self, xxx, zzz):
class 子类(父类):
def __init__(self, xxx, zzz):
super().__init__(xxx, zzz)#小括号不要丢呀super()!!!!!!!
#9-6
class Restaurant():
#创建了餐厅的类,创建一段内存空间
def __init__(self, restaurant_name, cuisine_type):
self.restaurant_name = restaurant_name
self.cuisine_type =cuisine_type
#初始化属性name type
def describe_resturant(self):
print(self.restaurant_name + ' ' +self.cuisine_type)
def open_resturant(self):
print("Resturant is opening.")
class IceCreamStand(Restaurant):
def __init__(self, restaurant_name, cuisine_type):
super().__init__(restaurant_name, cuisine_type)
self.flaovrs = ['Apple', 'Banana', 'Pear']
def show(self):
print(f"Ice cream's flaovrs : {self.flaovrs}")
a = IceCreamStand('KFE', 'fry')
a.show()
#9-7
class User():
def __init__(self, first_name, last_name):
self.first_name = first_name
self.last_name = last_name
def describe_user(self):
print(self.first_name.title() + ' ' + self.last_name.title())
def greet_user(self):
print('Hello! ' + self.first_name.title() + ' ' + self.last_name + '.')
class Admin(User):
def __init__(self, first_name, last_name):
super().__init__(first_name, last_name)
self.privileges = ["can add post", "can delete post", "can ban user"]
def show_privileges(self):
print(f'privileges : {self.privileges}')
a = Admin("Trump", "Tom")#创建一个实例
a.show_privileges()#调用方法
#9-8
class User():
def __init__(self, first_name, last_name):
self.first_name = first_name
self.last_name = last_name
def describe_user(self):
print(self.first_name.title() + ' ' + self.last_name.title())
def greet_user(self):
print('Hello! ' + self.first_name.title() + ' ' + self.last_name + '.')
class Admin(User):
def __init__(self, first_name, last_name):
super().__init__(first_name, last_name)
#删除原有的特权
def show_privileges(self):
Privileges()#抽象化,调用这个类
class Privileges():
def __init__(self):
self.privileges = ["can add post", "can delete post", "can ban user"]
print(f"{self.privileges}")
a = Admin('Trump', 'Tom')
a.describe_user()
a.show_privileges()
###输出
Trump Tom
['can add post', 'can delete post', 'can ban user']
#9-9
class Car():
def __init__(self, make, model, year):
self.make = make
self.model = model
self.year = year
self.odometer_reading = 0
def describe(self):
L_name = str(self.year) + ' ' + self.make + ' ' + self.model
return L_name
def read_odometer(self):
print(f"This car has {self.odometer_reading} miles on it.")
class Battery():
def __init__(self,battery_size = 70):
self.battery_size = battery_size
def descirbe_battary(self):
print(f"This car has a {self.battery_size} -KWH battary.")
def get_range(self):
if self.battery_size == 70:
print(f"This car can run almost 270KM.")
elif self.battery_size == 85:
print(f"This car can run almost 330KM.")
def upgrade_battery(self):
if self.battery_size != 85:
self.battery_size = 85
class ELectricCar(Car):
def __init__(self, make, model, year):
super().__init__(make, model, year)#继承父类car
self.battery = Battery()#抽象化,调用Battery类
my_tesla = ELectricCar("Audi", "A4", "2019")
my_tesla.battery.descirbe_battary()
my_tesla.battery.upgrade_battery()
my_tesla.battery.descirbe_battary()
##输出
This car has a 70 -KWH battary.
This car has a 85 -KWH battary.