• 面向对象


    1 、接口类,抽象类

    from abc import ABCMeta,abstractmethod
    class Payment(metaclass=ABCMeta): 抽象类(接口类):
      @abstractmethod
      def pay(self): pass 制定了一个规范
      @abstractmethod
      def func(self):pass
    class Alipay(Payment):
      def __init__(self,money):
        self.money = money
      def pay(self):
        print('使用支付宝支付了%s' %self.money)
    class Jdpay(Payment):
      def __init__(self, money):
        self.money = money
      def pay(self):
        print('使用京东支付了%s' % self.money)
    class Wechatpay(Payment):
      def __init__(self,money):
        self.money = money
      def pay(self):
        print('使用微信支付了%s' % self.money)
    def pay(obj):
      obj.pay()
    w1 = Wechatpay(200)
    a1 = Alipay(200)
    j1 = Jdpay(100)
    pay(a1) 归一化设计
    w1 = Wechatpay(300)
    w1.weixinpay()

    2、属性

    class Person:
    def __init__(self,name,age):
    self.name = name
    if type(age) is int:
    self.__age = age
    else:
    print('你输入的年龄的类型有误,请输入数字')
    @property
    def age(self):
    return self.__age
    @age.setter
    def age(self,a1):
    if type(a1) is int:
    self.__age = a1
    else:
    print('你输入的年龄的类型有误,请输入数字')
    @age.deleter
    def age(self):
    del self.__age
    p1 = Person('alex',2)
    # print(p1.__dict__)
    print(p1.age)
    p1.age = 30
    print(p1.age)
    # del p1.age
    # print(p1.__dict__)

    @property    啥时用:类似于计算周长、面积

    @age.setter   更改私有变量属性值

    @age.deleter  删除私有变量属性

    3、反射

    class Manager:
    OPERATE_DIC = [
    ('创造学生账号', 'create_student'),
    ('创建课程', 'create_course'),
    ('查看学生信息', 'check_student_info'),
    ]
    def __init__(self,name):
    self.name = name
    def create_student(self):
    print('创造学生账号')
    def create_course(self):
    print('创建课程')
    def check_student_info(self):
    print('查看学生信息')
    class Student:
    OPERATE_DIC = [
    ('查看所有课程', 'check_course'),
    ('选择课程', 'choose_course'),
    ('查看已选择的课程', 'choosed_course')
    ]
    def __init__(self,name):
    self.name = name
    def check_course(self):
    print('查看所有课程')
    def choose_course(self):
    print('选择课程')
    def choosed_course(self):
    print('查看已选择的课程')
    def login():
    username = input('name:')
    password = input('pwd:')
    with open('userinfo') as f:
    for line in f:
    usr,pwd,ident = line.strip().split('|')
    if usr ==username and pwd == password:
    print('登陆成功')
    return username,ident

    import sys
    def main():
    usr,id = login()
    print('usr,id:',usr,id)
    file = sys.modules['__main__']
    cls = getattr(file,id)
    obj = cls(usr)
    operate_dic = cls.OPERATE_DIC
    while True:
    for num,i in enumerate(operate_dic,1):
    print(num,i[0])
    choice = int(input('num<<<'))
    choice_item = operate_dic[choice-1]
    getattr(obj,choice_item[1])()
    main()
  • 相关阅读:
    scrapy安装教程
    【bzoj4200】[Noi2015]小园丁与老司机 STL-map+dp+有上下界最小流
    【bzoj4889】[Tjoi2017]不勤劳的图书管理员 树状数组+分块+二分
    【bzoj4198】[Noi2015]荷马史诗 贪心+堆
    【bzoj2989】数列 KD-tree+旋转坐标系
    【bzoj4212】神牛的养成计划 Trie树+可持久化Trie树
    【bzoj4242】水壶 BFS+最小生成树+倍增LCA
    【bzoj4238】电压 DFS树
    【bzoj4240】有趣的家庭菜园 贪心+树状数组
    【bzoj4237】稻草人 分治+单调栈+二分
  • 原文地址:https://www.cnblogs.com/mengxiangqun/p/11113194.html
Copyright © 2020-2023  润新知