zoukankan      html  css  js  c++  java
  • 面向对象之基础等相关内容-24

    1.面向对象

    # 1、如何基于面向对象的思想写程序
    # 例1
    # 学生的数据
    # stu_name = "egon"
    # stu_age = 18
    # stu_gender = "male"

    # 学生的功能
    # def choose(name, age, gender):
    #     print('%s:%s:%s 正在选课' % (name, age, gender))

    # choose(stu_name,stu_age,stu_gender)

    # 例2:基于对象式的思想进行改写
    # def choose(stu_self):
    #     print('%s:%s:%s 正在选课' % (stu_self["stu_name"], stu_self["stu_age"],stu_self["stu_gender"],))
    #
    # stu_obj = {
    #     "stu_name": "egon",
    #     "stu_age": 18,
    #     "stu_gender": "male",
    #     "choose":choose
    # }

    # print(stu_obj["stu_name"])
    # stu_obj["choose"](stu_obj)

    # python提供专门的语法来更漂亮地实现面向对象编程,什么语法???

    '''
    学生对象1
      数据:

          名字 = "冯疯子"
          年龄 = 18
          性别 = "female"


    学生对象2
      数据:

          名字 = "郭靖"
          年龄 = 19
          性别 = "male"


    学生对象3
      数据:
          名字 = "大雕"
          年龄 = 200
          性别 = "male"


    学生的类
      相同的数据
          学校 = "oldboy"
      相同的功能
          选课


    '''
    # 类体代码会在类定义阶段立刻执行,然后将产生的名字都丢到类的名称空间中
    class Student:
       # 相同的数据
       school = "oldboy"

       # 相同的功能
       def choose(self):
           print("正在选课")


       # print('====>')

    stu_obj1=Student()
    stu_obj2=Student()
    stu_obj3=Student()

    stu_obj1.name = "冯疯子"  # stu1_obj1.__dict__["name"] = "冯疯子"
    stu_obj1.age = 18
    stu_obj1.gender = "female"

    stu_obj2.name = "郭靖"
    stu_obj2.age = 19
    stu_obj2.gender = "male"

    stu_obj3.name = "大雕"
    stu_obj3.age = 200
    stu_obj3.gender = "male"

    # print(stu_obj1.name)
    # stu_obj1.school = "xxx"
    # print(stu_obj1.school)

    # print(Student.__dict__)
    print(stu_obj1.__dict__)
    print(stu_obj2.__dict__)
    print(stu_obj3.__dict__)

    2.初始化方法

    # =============================>例1
    # class Student:
    #     school = "oldboy"
    #
    #     def choose(self):
    #         print("正在选课")
    #
    # stu_obj1=Student()
    # stu_obj2=Student()
    # stu_obj3=Student()

    # stu_obj1.name = "冯疯子"
    # stu_obj1.age = 18
    # stu_obj1.gender = "female"
    #
    # stu_obj2.name = "郭靖"
    # stu_obj2.age = 19
    # stu_obj2.gender = "male"
    #
    # stu_obj3.name = "大雕"
    # stu_obj3.age = 200
    # stu_obj3.gender = "male"

    # # ============================>例2:
    # class Student:
    #     school = "oldboy"
    #
    #     def choose(self):
    #         print("正在选课")
    #
    # stu_obj1 = Student()
    # stu_obj2 = Student()
    # stu_obj3 = Student()
    #
    # def init(obj, x, y, z):
    #     obj.name = x
    #     obj.age = y
    #     obj.gender = z
    #
    # init(stu_obj1, "冯疯子", 18, "female")
    # init(stu_obj2, "郭靖", 19, "male")
    # init(stu_obj3, "大雕", 200, "male")

    # ============================>例3:
    class Student:
       school = "oldboy"

       #             空对象
       def __init__(obj, x, y, z):
           obj.name = x
           obj.age = y
           obj.gender = z
           # return None # 只能返回None

       def choose(self):
           print("正在选课")

    # 调用类:
    # 1、创建一个空对象与类相关
    # 2、把空对象、"冯疯子", 18, "female"一起传给__init__方法,完成对象的初始化
    # 3、赋值符号把初始化好的对象的内存地址绑定变量名stu_obj1
    stu_obj1 = Student("冯疯子", 18, "female")
    stu_obj2 = Student("郭靖", 19, "male")
    stu_obj3 = Student("大雕", 200, "male")


    print(Student.__dict__)
    print(stu_obj1.__dict__)

    3.属性查找

    # 优先级
    # 先从对象的字典里找,没有,再去类的字典中找
    class Student:
       school = "oldboy"

       def __init__(obj, x, y, z):
           obj.name = x
           obj.age = y
           obj.gender = z

       def choose(self):
           print("%s 正在选课" %self.name)

    stu_obj1 = Student("冯疯子", 18, "female")
    stu_obj2 = Student("郭靖", 19, "male")
    stu_obj3 = Student("大雕", 200, "male")

    # 1、类中定义的数据是直接共享给所有对象使用的
    # print(id(stu_obj1.school))
    # print(id(stu_obj2.school))
    # print(id(stu_obj3.school))
    # print(id(Student.school))

    # Student.school="xxx"
    # print(stu_obj1.school)
    # print(stu_obj2.school)
    # print(stu_obj3.school)

    # print(Student.choose)
    # print(stu_obj1.choose)
    # print(stu_obj2.choose)
    # print(stu_obj3.choose)

    # 2、类中定义的函数是绑定给所有对象用的,绑定给谁就应该由哪个对象来调用
    # 对象.绑定方法()会把对象当作第一个参数传入
    # 类.函数()就是一个函数的玩法,没有自动传参的效果

    # Student.choose(123123123)
    stu_obj3.choose()
    stu_obj2.choose()
    stu_obj1.choose()

     

  • 相关阅读:
    iptables详解
    Python中的Subprocess模块
    Logging模块
    python inspect.stack() 的简单使用
    python之inspect模块
    python之platform模块
    GlusterFS分布式存储学习笔记
    AD 域服务简介(一)- 基于 LDAP 的 AD 域服务器搭建及其使用
    LDAP概念和原理介绍
    文件传输协议FTP、SFTP和SCP
  • 原文地址:https://www.cnblogs.com/usherwang/p/13433669.html
Copyright © 2011-2022 走看看