zoukankan      html  css  js  c++  java
  • LF 模块三

    面向过程编程

    面向过程:核心是过程二字,过程是指的解决问题的步骤,
    设计一条流水线,机械式的思维方式
    优点:复杂的问题流程化,进而简单化
    缺点:可扩展性差,功能一旦实现,扩展很麻烦

    应用场景:功能一旦实现基本不需要扩展的情况,自动部署脚本之类

    import json
    
    def inter_active():
        name = input("name>>:").strip()
        pwd = input("password>>:").strip()2
        return {
            "name":name,
            "password":pwd
        }
    
    
    def check(user_info):
        is_valid = True
        if len(user_info["name"]) == 0:
            print("用户名不能为空")
            is_valid = False
        if len(user_info["password"]) < 6:
            print("密码不能少于6位")
            is_valid = False
        return {
            "is_valid":is_valid,
            "user_info":user_info
        }
    
    
    def register(check_info):
        if check_info["is_valid"]:
            with open("db.json","w",encoding="utf-8") as f:
                json.dump(check_info["user_info"],f)
    
    def main():
        user_info = inter_active()
        check_info = check(user_info)
        register(check_info)
    
    if __name__ == '__main__':
        main()

    面向对象编程

    面向对象:核心是对象二字,对象是特征技能的集合(属性和方法)
    优点:可扩展性强
    缺点:编程复杂度高

    应用场景:用户需求经常变化

    对象:特征与技能的集合体(属性和方法 )
    类:一些类对象相似的特征与技能的结合体
    注意:站在不同角度,分类不同
    在现实生活中,先有对象,再有类
    在计算机中,现有类,后有对象

    class LuffyStudent:
        school = "luffycity"
        def learn(self):
            print("is learning")
    
        def eat(self):
            print("is eating")
    
        def sleep(self):
            print("is sleeping")
    
    # 生成对象
    stu1 = LuffyStudent()
    print(stu1.school)

    如何使用类

    定义一个类(注意类名首字母大写)。

    1.执行:

    与函数不同,函数声明过程中并不执行,只有在调用时(函数名+括号)才能执行。(类后面+括号 是实例化,生成对象)

    类在定义阶段,内部代码就会执行,会产生新的名字,创建新的名称空间,名称空间的结果都是字典模式

    2.名称

    通常情况下,类里面定义了行为和属性,但是在python中一般也可以加入其他代码

    类内部定义的变量叫数据属性,函数叫函数属性

    针对类的属性,python中有专门的属性访问语法点(.)

    class Luffy_Student:
        school = "luffycity"
        def learn(self):
            print("is learning")
    
        def eat(self):
            print("is eating|")
    #查看类的名称空间
    print(Luffy_Student.__dict__)
    print(Luffy_Student.__dict__["school"])
    
    #
    print(Luffy_Student.school) #等同于在名称空间里查找Luffy_Student.__dict__["school"]
    
    #
    Luffy_Student.country = "China"
    
    #
    del Luffy_Student.country
    
    #
    Luffy_Student.school = "Luffycity123"
    
    #类的用法,点(.)方法,属性
    #类的两大操作 第一是 
    #类加()是实例化一个对象。
    #第一大类用处对属性操作,第二大操作是生成一个个对象

    __init__方法

    用来为对象定制对象自己独有的特征(构造函数,对象初始化)

    class Luffy_Student:
        school = "luffycity"
        def __init__(self,name,sex,age):
            self.Name = name 
            self.sex = sex
            self.age = age
        def learn(self):
            print("is learning")
    
        def eat(self):
            print("is eating|")
    
    stu1=Luffy_Student('alex','',19)
    print(stu1)
    print(stu1.Name)

    加上__init__方法后是实例化步骤:

    1.先产生一个空对象

    2.触发 类的init方法 >> LuffyStudent.__init__(stu,'alex','女',18)

    3.执行过程中,在init方法内,把方法给对象赋值,self.name = name

    class LuffyStudent:
        school = "luffycity"
    
        def __init__(self,name,sex,age):
            self.name = name
            self.sex = sex
            self.age = age
        def learn(self):
            print("is learning")
    
        def eat(self):
            print("is eating")
    
    stu1 = LuffyStudent("Alex","",18)
    
    # 实例化之后,对对象操作
    #
    print(stu1.name)
    
    #
    stu1.name = "bbbb"
    print(stu1.name)
    
    #删除
    del stu1.name
    print(stu1.__dict__)
    
    #
    stu1.class_name = "python"
    print(stu1.class_name)

    属性查找

    对象:特征与技能的结合体

    print(stu1.__dict__)
    print(stu2.__dict__)
    print(stu3.__dict__)
    
    {'name': 'Alex', 'sex': '', 'age': 18}
    {'name': 'ben', 'sex': '', 'age': 28}
    {'name': 'cici', 'sex': '', 'age': 21}

    类:类是一系列对象相似的特征和技能的结合体

    类中的属性,是对象共有的

    print(id(stu1.school))
    print(id(stu2.school))
    
    35262960
    35262960

    类中的函数属性:是绑定给对象的,绑定到不同的对象是不同的绑定方法。对象调用绑定方法时,会将对象自身当做第一个参数传入绑定方法

    print(LuffyStudent.learn)
    
    >> <function LuffyStudent.learn at 0x000000000240AE18>
    
    
    LuffyStudent.learn(stu1)
    
    >> Alex is learning

    类中定义的函数,在没有经过任何附加处理的情况下就是绑定方法,谁来调,就把自己传入

    对象本身只有独有属性(init),相似特征放在类里,如果有同名属性,那么就先访问对象本身,再访问类

    # 类中的函数属性:是绑定给对象的,绑定到不同的对象是不同的绑定方法。对象调用绑定方法时,会将对象自身当做第一个参数传入绑定方法
  • 相关阅读:
    利用SHELL的PROMPT_COMMAND添加日志审计功能,实时记录任何用户的操作到日志文件中
    PBR Step by Step( 五)Phong反射模型
    PBR Step by Step(四)Lambertian反射模型
    PBR Step by Step(三)BRDFs
    PBR Step by Step(二)辐射度
    PBR Step by Step(一)立体角
    图形管线之旅 Part6
    图形管线之旅 Part5
    图形管线之旅 Part4
    图形管线之旅 Part3
  • 原文地址:https://www.cnblogs.com/alexstraze/p/9363275.html
Copyright © 2011-2022 走看看