python学习——面向对象

  • 1.函数式编程和面向对象的对比
    • 函数:
      • 优点:定义简单、调用简单
      • 缺点:
    • 面向对象:
      • 缺点:定义复杂、调用复杂
      • 优点:将相同功能的函数归类
    • 总结:
      • 1、函数式编程有些时候比面向对象好
      • 2、python中支持两种编程方式
      • 3、面向对象格式:
        • 定义函数
          • class类名:——定义一个类
            • def __init__(self,name):——构造方法,如果类名(),则该方法被自动执行;目的是进行数据初始化;
            • def 函数名(self):——在类中编写了一个方法
              • pass
        • 调用函数
          • x1 = 类名()——实例化一个类名的对象
          • x1.函数名()——通过对象调用其中的方法
        • 应用:
          • 1、通过构造方法,可以将数据进行打包,以后使用时,去其中获取即可
          • 2、将数据封装到对象中,以供其他函数调用
          • 3、函数可以在类内部调用:self.name
  • 2.面向对象代码如何编写
    • a.规则
      • class Foo:
      • obj = Foo()
      • obj.detail()
    • b.什么时候写?如何写?
      • 方法一:归类+提取公共值
        • 提取公共值
      • 方法二:
        • 在指定类中编写和当前类相关的所有代码 + 提取公共值
  • 3.面向对象三大特性:封装/继承/多态
    • 封装:
      • 将相关功能封装到一个类中:
        • class Message:
        • def email(self):pass
      • 将数据封装到一个对象中:
        • class Person:
          • def __init__(self,name,age,gender):
            • self.name= name
            • self.age = age
            • self.gender = gender
          • obj = Person('孙福来',18,'女')
    • 继承:
      • 继承编写
        • class Foo(父类):
          • pass
      • 支持多继承(先找左,再找右)
      • 为什么要有多继承?提供代码重用性
      • 练习:找self是哪个类的对象,就从该类开始找(自己没有找父类)
    • 多态
      • 多种形态或多种状态、
      • 鸭子模型,只要可以嘎嘎叫就是鸭子.
      • def func(arg):
        • arg.send()
  • 重点:
    • 1.编写方式执行流程
    • 2.如何归类?跟着感觉走
      • 反向:归类+提取公共值
      • 正向:类相关的功能+提取公共值
    • 3.三大特性
      • 封装:
        • 将相关功能封装到一个类中
        • 将数据封装到一个对象中
class Userinfo:
    def __init__(self):
        self.name = None

    def info(self):
        print('当前用户名称:%s' %(self.name))

    def account(self):
        print('当前用户%s的账单是。。。' %(self.name))

    def shopping(self):
        print('%s购买了人形抱枕' %(self.name))

    def login(self):
        usr = input('>>>')
        pwd = input('>>>')
        if usr == 'alex' and pwd == 'sb':
            self.name = usr
            while 1:
                print('''
                    1.查看用户信息
                    2.查看用户账单
                    3.购买
                    ''')
                num = int(input('序号:'))
                if num == 1:
                    self.info()
                elif num == 2:
                    self.account()
                elif num == 3:
                    self.shopping()
                else:
                    print('序号不存在,请重新输入')

        else:
            print('false')

obj = Userinfo()
obj.login()
示例