美文网首页
python零基础12:面向对象编程

python零基础12:面向对象编程

作者: Iphone60Plus | 来源:发表于2020-03-25 20:51 被阅读0次

类与对象

事情要从类开始讲起

#类的概念:判断和理解事物的性质
#类(群体) 如:狗类、秋田犬、人类、电脑等等
#实例(个体) 如:忠犬八公、[1,2]、我的电脑等等

万事万物,皆为对象

#对象的概念:类和实例的集合
#对象分为类对象和实例对象
#类对象:电脑很强大
#实例对象:我的电脑卡了
#万事万物,皆为对象

类的创建和调用

我们都是中国人

image.png
类的创建
#类的创建:class+类名+冒号
class Computer:
#类的属性创建:通过赋值语句
    screen = True
#实例方法创建:def + 方法名(self)
    def start(self):
#执行过程
        print('电脑正在开机中')

#创建类名首字母一定大写
#创建实例方法与自定义函数唯一区别是,实例方法必须用self
#创建属性要通过赋值语句

类的调用

class Computer:
    screen = True
    def start(self):
        print('正在开机中')

#类的实例化:实例名=类名()
#作用:可调用类的属性和方法 实例名.属性 实例名.方法()
#可创建多个实例
#self定义时不丢,调用时忽略
my_computer = Computer()
you_computer = Computer()
print(my_computer.screen)
my_computer.start()
you_computer.start()

创建类的两个关键点

特殊参数self

class Chinese:
#类的属性
    name = '吴枫'  # 类属性name
#类的方法
    def say(self):
##变量self代替实例接收内部属性
        print(self.name + '是中国人')
        # 打印出'吴枫是中国人'
person = Chinese()
person.say()
#def创建方法时,第一参数留给self,调用时忽略他
#在类的方法中调用类属性或其他方法时,就要用self代表实例调用。self.属性 self.方法

特殊方法:初始化方法

#初始化方法中将属性初始化,在实例中自动运行,无需调用
class Chinese:
   def __init__ (self):
       self.mouth = 1  # self.不能丢
       self.eye = 2
   
   def body(self):
       print('我有%s张嘴巴' % self.mouth)
       print('我有%s只眼睛' % self.eye)

person = Chinese()
person.body()

#可接收其他参数,可作为属性进行流转
class Chinese:
   
   def __init__(self, name, birth, region):
       self.aaa = name   # self.name = '吴枫' 
       self.bbb = birth  # self.birth = '广东'
       self.ccc = region  # self.region = '深圳'

   def born(self):
       print(self.aaa + '出生在' + self.bbb)

   def live(self):
       print(self.aaa + '居住在' + self.ccc)    

person = Chinese('吴枫','广东','深圳') # 传入初始化方法的参数
person.born()
person.live()

面向对象编程

image.png
#面向对象编程可拓展性,可读性、维护成本更胜一筹
class Project:
    
    def __init__(self):
        self.key = 1

    def input(self):
        choice = input('请选择计算类型:(1-工时计算,2-人力计算)')
        if choice == '1':
            self.size = float(input('请输入项目大小:(1代表标准大小,请输入小数)'))
            self.number = int(input('请输入人力数量:(请输入整数)'))
            self.time = None
        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()

相关文章

  • python面向对象学习笔记-01

    学习笔记 # 0,OOP-Python面向对象 - Python的面向对象 - 面向对象编程 - 基础 -...

  • Python OOP-1

    0. OOP-Python面向对象 Python面向对象 面向对象编程基础公有私有继承组合,Mixin 魔法函数魔...

  • python的面向对象

    python的面向对象(ObjectOriented,OO)-面向对象编程-基础-公有私有-继承-组合,Minxi...

  • python零基础12:面向对象编程

    类与对象 事情要从类开始讲起 万事万物,皆为对象 类的创建和调用 我们都是中国人 类的调用 创建类的两个关键点 特...

  • Python 面向对象编程

    Python 面向对象编程(一) Python 面向对象编程(一) 虽然Python是解释性语言,但是它是面向对象...

  • Python从入门到精通

    Python语法的三个阶段 Python基础语法函数是编程 Python进阶语法面向对象编程 Python高级语法...

  • 廖雪峰python3 教程

    观其大纲 1 python基础 2 函数 3 高级特性 4 函数式编程 5 模块 6 面向对象编程 7 面向对象高...

  • Python 3 基础编程课程

    Python 3 基础编程课程 Python 3 介绍 Python 作为一款流行的面向对象的脚本编程语言,拥有其...

  • Python面向对象(基础)

    面向对象 Python是支持面向对象的,面向对象编程是一种程序设计思想。 类和实例(基础) 面向对象最重要的就是类...

  • python是汇编语言还是高级语言?

    Python是不是汇编语言?不是,Python语言并不是汇编语言,它是一门高级的、面向对象、适合零基础学习的编程语...

网友评论

      本文标题:python零基础12:面向对象编程

      本文链接:https://www.haomeiwen.com/subject/zmxayhtx.html