class User():
def __init__(self,first_name,last_name,age):
self.first_name = first_name
self.last_name = last_name
self.age = age
def describe_user(self):
print('first_name: '+self.first_name)
print('last_name: '+self.last_name)
print('age: '+str(self.age))
def greet_user(self):
print('Hello, {} {}.'.format(self.first_name.title(),self.last_name.title()))
user_1 = User('cindy','candy',18)
user_1.describe_user()
user_1.greet_user()
user_2 = User('dandy','dancy',16)
user_2.describe_user()
user_2.greet_user()
first_name: cindy
last_name: candy
age: 18
Hello, Cindy Candy.
first_name: dandy
last_name: dancy
age: 16
Hello, Dandy Dancy.
9-5 尝试登录次数 :在为完成练习 9-3 而编写的 User 类中,添加一个名为 login_attempts 的属性。编写一个名为 increment_login_attempts() 的方法,它将属性 login_attempts 的值加 1 。再编写一个名为 reset_login_attempts() 的方法,它将属性 login_attempts 的值重置为 0 。根据 User 类创建一个实例,再调用方法 increment_login_attempts() 多次。打印属性 login_attempts 的值,确认它被正确地递增;然后,调用方法 reset_login_attempts() ,并再次打印属性 login_attempts 的值,确认它被重置为 0 。
class User():
def __init__(self,first_name,last_name,age):
self.first_name = first_name
self.last_name = last_name
self.age = age
self.login_attempts = 0
--snip--
def increment_login_attempts(self):
self.login_attempts += 1
def reset_login_attempts(self):
self.login_attempts = 0
user_1 = User('cindy','candy',18)
user_1.increment_login_attempts()
user_1.increment_login_attempts()
print(user_1.login_attempts)
user_1.reset_login_attempts()
print(user_1.login_attempts)
2
0
9-7 管理员 :管理员是一种特殊的用户。编写一个名为 Admin 的类,让它继承你为完成练习 9-3 或练习 9-5 而编写的 User 类。添加一个名为 privileges 的属性,用于存储一个由字符串(如 "can add post" 、 "can delete post" 、 "can ban user" 等)组成的列表。编写一个名为 show_privileges() 的方法,它显示管理员的权限。创建一个 Admin 实例,并调用这个方法。
9-8 权限 :编写一个名为 Privileges 的类,它只有一个属性 —— privileges ,其中存储了练习 9-7 所说的字符串列表。将方法 show_privileges() 移到这个类中。在 Admin 类中,将一个 Privileges 实例用作其属性。创建一个 Admin 实例,并使用方法 show_privileges() 来显示其权限。
class User():
def __init__(self,first_name,last_name,age):
self.first_name = first_name
self.last_name = last_name
self.age = age
self.login_attempts = 0
--snip--
class Admin(User):
def __init__(self,first_name,last_name,age):
super().__init__(first_name,last_name,age)
self.privileges = Privileges()
class Privileges():
def __init__(self):
self.privileges = [
'can add post',
'can delete post',
'can ban user',
]
def show_privileges(self):
for privilege in self.privileges:
print('Admin {}.'.format(privilege))
admin = Admin('cindy','candy',18)
admin.privileges.show_privileges()
Admin can add post.
Admin can delete post.
Admin can ban user.
9-12 多个模块 :将 User 类存储在一个模块中,并将 Privileges 和 Admin 类存储在另一个模块中。再创建一个文件,在其中创建一个 Admin 实例,并对其调用方法 show_privileges() ,以确认一切都依然能够正确地运行。
admin.py
from user import User
class Admin(User):
--snip--
class Privileges():
--snip--
my_py.py
from admin import Admin
admin = Admin('cindy','candy',18)
admin.privileges.show_privileges()
Admin can add post.
Admin can delete post.
Admin can ban user.
from random import randint
x = randint(1, 6)
请创建一个 Die 类,它包含一个名为 sides 的属性,该属性的默认值为 6 。编写一个名为 roll_die() 的方法,它打印位于 1 和骰子面数之间的随机数。创建一个 6 面的骰子,再掷 10 次。 创建一个 10 面的骰子和一个 20 面的骰子,并将它们都掷 10 次。
from random import randint
class Die():
def __init__(self, sides=6):
self.sides = sides
def roll_die(self):
print(randint(1,self.sides))
def roll_10(die):
for i in range(0,10):
die.roll_die()
print('==============================================')
die = Die()
roll_10(die)
die = Die(10)
roll_10(die)
die = Die(20)
roll_10(die)
4
3
5
6
5
4
4
2
6
3
==============================================
9
2
4
7
4
9
5
3
7
8
==============================================
9
8
15
14
14
14
9
15
20
20
==============================================