1 Star 0 Fork 0

Python28/yl

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
直播day2.py 5.56 KB
一键复制 编辑 原始数据 按行查看 历史
杨礼 提交于 2020-02-04 18:04 . 直播day2
# class Person:
# def __init__(self,name,age,weight,height):
# self.name = name
# self.age = age
# self.weight = weight
# self.height = height
# self.__score = 70
#将某个方法伪装成属性,这个方法需要有返回值
# @property
# def bmi(self):
# return self.weight/(self.height*self.height)
#属性一般有三种访问方式:获取,修改,删除
#当对象.score 被放在print中的时候,会自动调用property下面那个方法
# @property
# def score(self):
# return self.__score + 30
#一定先有取值的方法,才能写设置值或者删除值的方法
#在@后面写刚才取值的那个方法的方法名,后面写。setter
#接下来,定义一个方法,方法名也要和取值的方法同名
#这个方法需要接收一个参数,用来给私有属性赋值
#如果是赋值操作,自动调用setter后面的方法
# @score.setter
# def score(self,sc):
# if sc < 0:
# print("输入有误")
# else:
# self.__score = sc
# @score.deleter
# def score(self):
# del self.__score
#总结,如果一个私有属性加上了property,那么他当前就变为可读的
#再加上setter之后,他就变成了可读可写
# p1 = Person("shang",32,80,1.9)
# print(p1.score)
# p1.score = 123
# print(p1.score)
#当通过。去访问这个伪装过的属性时,可以获取到方法的返回值
# print(p1.bmi)
# bmi = p1.bmi()
# print(bmi)
# 作业
# 一、选择题
#
# Python中定义私有属性的方法是()。
# A.使用private关键字
# B.使用public关键字
#
# C.使用__XX__定义属性名
# D.使用__XX定义属性名
#
# 2.
# 下列选项中,不属于面向对象程序设计的三个特征的是()。
#
# A.抽象
# B.封装
# C.继承
# D.多态
#
# 3.
# 以下C类继承A类和B类的格式中,正确的是(c)。
#
# A.
#
#
# class C A, B: B.
#
#
# class C(A:B
#
# ) C.
#
#
# a, B) D.class C A and B:
#
#
# 4.
# 下列选项中,与class
# Person等价的是(ac)。
#
# A.
#
#
# class Person(Object) B.class Person(Animal)
#
#
# C.
#
#
# class Person(object) D.class Person: object
#
#
# 二、判断题
#
# 继承会在原有类的基础上产生新的类,这个新类就是父类。(错)
# 带有两个下划线的方法一定是私有方法。(错)
# 子类能继承父类的一切属性和方法。(错)
# 子类通过重写继承的方法,覆盖掉跟父类同名的方法。(对)
# 如果类属性和实例属性重名,对象也可以访问类属性的值。(对)
# 使用类名获取到的值一定是类属性的值。(错)
#
# 三、填空题
#
# 如果属性名的前面加上了两个_下划线______,就表明它是私有属性。
# 在现有类基础上构建新类,新的类称作子类,现有的类称作___父类_________。
# 父类的__私有属性_____属性和方法是不能被子类继承的,更不能被子类访问。
# Python语言既支持单继承,也支持____多_______继承。
# 子类想按照自己的方式实现方法,需要___覆盖____从父类继承的方法。
# 子类通过___super方法_______可以成功地访问父类的成员。
#
# 四、简答题
#
# 请简述如何保护类的属性。 属性私有
# 什么是继承? 继承父类的属性和方法
# 请简述私有属性无法访问的原理。 两个下划线开头声明该方法为私有方法不能在类地外部调用
#
#
# 五
# 编程题
#
# 1.
# 简述面向对象中为什么要有继承?
# 减少代码量 继承已有的方法属性 继承增加了耦合性
# 2.
# Python继承时,查找成员的顺序遵循什么规则?
# 先从自己找 一层一层往上找
# 3.
# 需求:
#
# 房子有户型,总面积(私有)和家具名称列表
# 新房子没有任何的家具
#
# 家具有名字和占地面积,其中
# 床:占4平米
# 衣柜:占2平面
# 餐桌:占1.5
# 平米
# 将以上三件家具添加到房子中
# 打印房子时,要求输出: 户型,总面积,剩余面积,家具名称列表
# class Home:
# def __init__(self, home_type, area):
# self.home_type=home_type
# self.area=area
# self.freearea=area
# self.jiaju=[]
# def __str__(self):
# return (' 户型:%s \n 总面积:%.2f \n 剩余面积:%.2f \n 家具名 %s'
# % (self.home_type, self.area, self.freearea, self.jiaju))
# def add_jiaju(self, itm):
# print('要添加%s' % itm)
# if itm.area > self.freearea:
# print('%s的面积太大,无法添加!' % (itm.name))
# return
# self.jiaju.append(itm.name)
# self.freearea-=itm.area
# class jiaju():
# def __init__(self, name, area):
# self.name=name
# self.area=area
# def __str__(self):
# return "[ %s ]:占地 [ %.2f ] 平米" % (self.name, self.area)
# bed=jiaju("床", 4)
# chest=jiaju('衣柜', 2)
# table=jiaju('餐桌', 1.5)
# print('bed:', bed)
# print('bed:', bed.name)
# print('bed:', bed.area)
# print(chest)
# print(table)
#
# myhome=Home('三室一厅', 100)
# myhome.add_jiaju(bed)
# myhome.add_jiaju(chest)
# myhome.add_jiaju(table)
# print(myhome)
# 4.
# 将反射用到的函数整理成笔记,尝试用自己话来描述每个函数的作用
# hasattr() 查找
# getattr() 获取
# setattr() 设置
# delattr() 删除
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/old_boy_education_python_28/yl.git
git@gitee.com:old_boy_education_python_28/yl.git
old_boy_education_python_28
yl
yl
master

搜索帮助