《Python编程从入门到实践》习题07

《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.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值