鱼C论坛

 找回密码
 立即注册
查看: 817|回复: 1

代码中,有些代码不懂啥意思,问题已写在注释中

[复制链接]
发表于 2020-5-23 13:37:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import math

class Project:
   
    def __init__(self):
        self.key = 1

    def input(self):
        choice = input('请选择计算类型:(1-工时计算,2-人力计算)')        #这里没加self,为啥后面的要加,解答一下呗
        if choice == '1':
            self.size = float(input('请输入项目大小:(1代表标准大小,请输入小数)'))       #不能理解为啥要加self,这里既不是在初始化方法内部,也不是在类内部引用类属性   
            self.number = int(input('请输入人力数量:(请输入整数)'))      #不能理解为啥要加self,这里既不是在初始化方法内部,也不是在类内部引用类属性
            self.time = None        #不能理解为啥要加self,这里既不是在初始化方法内部,也不是在类内部引用类属性
        if choice == '2':
            self.size = float(input('请输入项目大小:(1代表标准大小,请输入小数)'))
            self.number = None
            self.time = float(input('请输入工时数量:(请输入小数)'))

    def estimated(self):
        # 人力计算
        if (self.number == None) and (self.time != None):
            self.number = math.ceil(self.size * 80 / self.time)
            print('项目大小为%.1f个标准项目,如果需要在%.1f个工时完成,则需要人力数量为:%d人' %(self.size,self.time,self.number))
        # 工时计算
        elif (self.number != None) and (self.time == None):
            self.time = self.size * 80 / self.number
            print('项目大小为%.1f个标准项目,使用%d个人力完成,则需要工时数量为:%.1f个' %(self.size,self.number,self.time))  
   
    def again(self):
        a = input('是否继续计算?继续请输入y,输入其他键将结束程序。')
        if a != 'y':
            # 如果用户不输入'y',则把key赋值为0
            self.key = 0  

    # 主函数
    def main(self):
        print('欢迎使用工作量计算小程序!')
        while self.key == 1:
            self.input()
            self.estimated()
            self.again()
        print('感谢使用工作量计算小程序!')
        
# 创建实例
project1 = Project()
project1.main()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-23 13:56:39 | 显示全部楼层
本帖最后由 Twilight6 于 2020-5-23 14:01 编辑

你先要知道在类中:
加上self 叫做实例变量  作用于 整个类的命名空间
没加self 且位于方法内的叫做 局部变量 只作用于 方法内的命名空间
没加self 且位于方法外,类内的变量叫做类变量 也是作用于整个类的命名空间
choice = input('请选择计算类型:(1-工时计算,2-人力计算)')  # 这里没加self,为啥后面的要加,解答一下呗
这里是没必要加上self,因为除了在你定义的input方法中,没有其他地方需要使用这个choice变量,所以没有必要带上self
self.size = float(input('请输入项目大小:(1代表标准大小,请输入小数)'))
self.number = int(input('请输入人力数量:(请输入整数)'))
self.time = None  # 不能理解为啥要加self,这里既不是在初始化方法内部,也不是在类内部引用类属性
在方法中加上self代表着是实例变量,没加self代表局部变量,你一出了这个方法,就找不到该变量了,如果你要其他方法再次使用该变量,那么必须带上self

比如说除了你input用到了 self.size  你的 estimated(self) 方法 也用到了 self.size  如果你没有加上self   这个方法 estimated(self)  就找不到size这个变量  

建议看下我整理的笔记:
类、实例、局部变量

希望能帮助到你
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 22:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表