zoukankan      html  css  js  c++  java
  • 面向对象编程

    面向对象

    面向对象
    封装
    继承
    多态

    程序 = 数据 + 功能
    模块可以存放 数据 和 功能
    函数是存放 功能 的,不调用不执行。
    列表,存储 数据 和 方法(函数名),

    把 数据 和 功能 整合起来,分为一类的编程思想就叫面向对象编程

    类和对象
    类:class

    先定义类,再调用类产生对象

    定义:定义阶段就运行,产生类的名称空间
    dict:查看名称空间

    class Student: 驼峰体
    ... 数据属性和方法属性

    调用类实例化对象的时候,运行,对对象进行初始化
    必须返回None,不能返回别的值
    def __init__(self,x,y,z):  
        self.x = x
    

    egon = Student(x,y,z) 实例化对象
    egon.x = 1
    Student.x

    产生空对象,调用__init__方法初始化对象,返回初始化的对象
    属性或对象先从对象中找,然后再去类中找,去父类,,,
    从自身开始查找,逐级往父级查找对应属性或方法,直到根对象Object.prototype,没有返回undefined

    类中的公共属性:

    直接改类中的属性的值,所有对象的相应的值都改了,
    如果改的是对象中的值,那么相当于重新创建了自己的值,不影响类中的值,和其它实例化的值

    def init(self,x,y,z):
    Student.count += 1

    bound method 绑定方法:绑定给谁就操作谁

    绑定方法地址里存的是啥?

    school_shanghai = School('上海校区','虹桥火车站')
    print(School.add_class)
    print(school_shanghai.add_class)

    <function School.add_class at 0x0000000000D73400>
    <bound method School.add_class of <main.School object at 0x0000000000D70978>>

    底层就是绑定给对象的名称空间,最终还是指向原来类的名称空间中的方法,
    相当于给这个对象做了一个标记,它在调用的时候就给它临时绑定一下
    是指向类中的函数的,地址不同,因为绑定方法做了进一步的处理,与普通函数不同

    内置方法

    方法

    class Student:
    def choice():
    pass
    Student.choice() 可以
    stu.choice() 不可以

    def xxx(self):
        pass
    

    Student.xxx(stu) 类调用自己的方法时,要注意对象参数

  • 相关阅读:
    关于data初始化值
    switch的优化替代写法
    phpstorm安装xdebug
    如何将一个列表封装为一个树形结构
    Win10系统桌面图标距离间距变大的问题
    cnpm无法加载文件的问题
    0、springboot
    1、springboot2新建web项目
    Game游戏分析
    netty学习
  • 原文地址:https://www.cnblogs.com/linqiaobao/p/12657730.html
Copyright © 2011-2022 走看看