• Python面向对象基础知识


    面向对象是一种编程方式,此编程方式的实现是基于对类和对象的使用

    类是一个模板,模板中包装了多个“函数”供使用(可以讲多函数中公用的变量封装到对象中)

    对象,根据模板创建的实例(即:对象),实例用于调用被包装在类中的函数

    面向对象的三大特性:封装、继承、多态

    类的成员:字段、方法和属性

    其中字段: 普通字段、静态字段

    方法:普通方法、类方法、静态方法

    属性:普通属性

    注: 所有成员中,只有普通字段的内容保存对象中,即:根据此类创建了多少个对象,在内存中就有多少个普通字段。而其他的成员,则都保存在类中,即:无论对象的多少,在内存中只创建一份。

    一、字段

    class Student:
        #静态字段
        name='lucy'
        def __init__(self,name):
            #普通字段
            self.name = name
    #直接访问普通字段
    obj = Student('lily')
    print obj.name
    
    
    #直接访问静态字段
    print Student.name

    普通字段通过对象来访问,静态字段通过类访问

    静态字段在内存中只保存一份

    普通字段在每个对象中都要保存一份

    应用场景: 通过类创建对象时,如果每个对象都具有相同的字段,那么就使用静态字段

    二:方法

    普通方法:由对象调用;至少一个self参数;执行普通方法时,自动将调用该方法的对象赋值给self;

    类方法:由类调用;至少一个cls参数;执行类方法时,自动将调用该方法的类复制给cls;

    静态方法:由类调用;无默认参数;

    class Student:
        def __init__(self,name):
            self.name = name
        def getName(self):
            print  self.name
            print '普通方法'
        @classmethod
        def class_func(cls):
            '''定义类方法,至少有一个cls参数'''
            print '类方法'
        @staticmethod
        def static_func():
            '''定义静态方法,无默认参数 '''
            print '静态方法'
    #调用普通方法
    stu = Student('lily')
    stu.getName()
    #调用类方法
    Student.class_func()
    #调用静态方法
    Student.static_func()

    对于所有的方法,均属于类,所以,在内存中也只保存一份。

    方法调用者不同、调用方法时自动传入的参数不同。

  • 相关阅读:
    ubuntu 从零安装tf-serving环境和opencv
    tensorflow pip install 安装指定版本的包并指定安装源(速度会快很多)
    Generative Adversarial Networks,gan论文的畅想
    ubuntu16 安装openssh-server 一直安装不上Unable to correct problems, you have held broken packages
    点乘(内积)和叉乘(外积、向量积)
    Ubuntu中清理Network下Connect to Server的入口
    tensorflow 之tensorboard 对比不同超参数训练结果
    tensorflow 高级api使用分布式之配置
    python opencv3 给图片加中文
    关于scp在zsh报错:zsh:no matches found :
  • 原文地址:https://www.cnblogs.com/NancyStartOnce/p/7380919.html
Copyright © 2020-2023  润新知