8.关于属性,下列说法正确的是( )。
A.数据成员也称为属性,分为公有属性和私有属性。
B.为了不破坏类的封装性,可以采用@property修饰器,来访问私有属性,检查属性。
C.@property装饰器是一个特殊的属性,它负责把一个方法变成属性来调用。
D.Setter该装饰器允许对已用@property装饰的属性(函数)赋值,但是setter装饰器必须在property的后面,且两个被修饰的属性(函数)名称必须保持一致。
9.判断:私有成员在类的外部不能直接访问,一般是在类的内部进行访问和操作。通过一种特殊方式“对象名._类名__xxx”也可以在外部程序中访问私有成员,但这会破坏类的封装性,不建议这样做。
答案:对
10.设计一个简单的购房商贷月供计算器类,按照以下公式计算总利息和每月还款金额:
总利息=贷款金额*利率
每月还款金额 = (贷款金额+总利息)/贷款年限
贷款年限不同利率也不同,这里规定只有如下表所示的3种年限、利率。
年限 利率
3年(36个月) 6.03%
5年(60个月) 6.12%
20年(240个月) 4.39%
class LoanCaculator():
def __init__(self, loan, time):
self.loan = loan
if time == "1":
self.time = 3
elif time == "2":
self.time = 5
elif time == "3":
self.time = 20
def get_total_interests(self):
return self.loan * self.get_interests_rate()
def get_interests_rate(self):
if self.time == 3:
return 0.0603
elif self.time == 5:
return 0.0612
elif self.time == 20:
return 0.0639
def get_monthly_payment(self):
return (self.loan + self.get_total_interests())/ (self.time * 12)
loan = int(input("请输入贷款金额:"))
time = input("请选择贷款年限:1.3年(36个月) 2.5年(60个月) 3.20年(240个月)")
loan_caculate = LoanCaculator(loan, time)
print("月供为: %f" % loan_caculate.get_monthly_payment())
运行结果:
请输入贷款金额:10000
请选择贷款年限:1.3年(36个月) 2.5年(60个月) 3.20年(240个月)3
月供为: 44.329167
11.设计Bird、fish类,都继承自Animal类,实现其方法print_info(),输出信息。
class Animal():
def __init__(self,age):
self.age = age
def print_info(self):
print("我今年%d岁了!" % (self.age)