第九章介绍的是类,因为和C的类还是有些区别的,所以还是有一点难度的。类的基本格式为:
class ClassName(object):
"""docstring for ClassName"""
def __init__(self, arg):
super(ClassName, self).__init__()
self.arg = arg
def function(self):
pass
其中第一行的object是可有可无的,但是第三行的__init__()是类的初始化,是必须有的。而super表示继承,如果没有需要继承的类则可以省略。定义函数则除了需要的形参外,还需要添加self参数。
子类中可以创建和父类中重名的函数来替换父类中函数的功能。
导入类的方式和导入函数的方式是基本一样的,也没什么好讲的。
#9-1
class Restaurant(object):
"""docstring for Restaurant"""
def __init__(self, restaurant_name, cuisine_type):
self.restaurant_name = restaurant_name
self.cuisine_type = cuisine_type
def describe_restaurant(self):
print("The Restaurant\'s name is "+self.restaurant_name
+", and its cuisine type is "+self.cuisine_type)
def open_restaurant(self):
print("The "+self.restaurant_name+" is opening!")
first_res = Restaurant('ford','none')
print(first_res.restaurant_name)
print(first_res.cuisine_type)
first_res.describe_restaurant()
first_res.open_restaurant()
#9-2
second_res = Restaurant('Lory','cold')
third_res = Restaurant('Marry','hot')
second_res.describe_restaurant()
third_res.describe_restaurant()
#9-3
class User(object):
"""docstring for User"""
def __init__(self, first_name, last_name):
self.first_name = first_name
self.last_name = last_name
def describe_user(self):
print("This is a person named " +self.first_name +" "+self.last_name)
def greet_user(self):
print("Hello, "+self.first_name+" "+self.last_name+"!")
first_person = User('Marry','Smimth')
second_person = User('John','Yel')
first_person.describe_user()
first_person.greet_user()
second_person.describe_user()
second_person.greet_user()
#9-4
class Restaurant(object):
"""docstring for Restaurant"""
def __init__(self, restaurant_name, cuisine_type):
self.restaurant_name = restaurant_name
self.cuisine_type = cuisine_type
self.number_served = 0
def describe_restaurant(self):
print("The Restaurant\'s name is "+self.restaurant_name
+", and its cuisine type is "+self.cuisine_type)
def open_restaurant(self):
print("The "+self.restaurant_name+" is opening!")
def set_number_served(self, number):
self.number_served = number
print("Here is "+self.number_served.__str__()+" having dinner!")
def increment_number_served(self, number):
self.number_served = self.number_served + number
print("Here now having "+self.number_served.__str__()+" people having dinner!")
first_res = Restaurant('ford','none')
print("Here is "+first_res.number_served.__str__()+" having dinner!")
first_res.number_served = 20
print("Here is "+first_res.number_served.__str__()+" having dinner!")
first_res.set_number_served(30)
first_res.increment_number_served(10)
#9-6
class IceCreamStand(Restaurant):
"""docstring for IceCreamStand"""
def __init__(self, restaurant_name, cuisine_type, flavors):
#Restaurant.__init__(restaurant_name, cuisine_type)
super(IceCreamStand, self).__init__(restaurant_name, cuisine_type)
self.flavors = flavors
Ice = IceCreamStand('ford','hot','cold')
print(Ice.flavors)
Ice.describe_restaurant()
#9-8
from n9 import User #上面那段代码放在n9.py中
class Admin(User):
"""docstring for Privileges"""
def __init__(self, first_name, last_name, privileges):
super(User, self).__init__()
self.privileges = privileges
def show_privileges(self):
print(self.privileges)
p1 = Admin('Marry','Smimth',"can delete post")
p1.show_privileges()
导入文件在上面测试过,这里也就不再展示。
#9-14
from random import randint
class Die(object):
"""docstring for Die"""
def __init__(self, sides=6):
self.sides = sides
def roll_die(self):
x = randint(1,self.sides)
print(x)
Player1 = Die(10)
for n in range(10):
Player1.roll_die()
print("\n\n")
Player2 = Die(20)
for n in range(10):
Player2.roll_die()
