zoukankan      html  css  js  c++  java
  • Python面向对象OOP(二)

    面向对象中的成员和组合

    class Foo:
    
        # 类变量(静态字段)
        age = 233
    
        def __init__(self, name):
            # 实例变量
            self.name = name
        
        def func(self):
            pass
    
    # 不同的对象,有不同的存储空间,保存着自己的属性(字段)
    obj1 = Foo("Canaan")
    obj2 = Foo("Jianjian")
    print(obj1.age, obj1.name)  # 静态字段也可以通过对象访问,如果本身没有,就回去类里面找
    print(obj2.age, obj2.name)
    
    print(Foo.age)  # 静态字段也可以通过类名去直接访问
    Foo.age = 2333  # 静态字段要通过类名去修改
    print(Foo.age)  
    
    print(obj1.age, obj1.name)
    print(obj2.age, obj2.name)
    
    obj1.age = 123  # 静态字段可以通过对象修改,每个对象之间互不影响,修改之后对类中的类变量也不影响
    print(obj1.age, obj1.name)
    print(obj2.age, obj2.name)
    
    
    # 对于实例变量(字段)访问时,只能通过对象访问,即obj.name
    # 对于类变量(静态字段),访问时,通过类名去访问,不方便时再使用对象去访问
    print(obj1.name)
    print(Foo.age)
    
    # 对象对于实例变量(字段)的修改,属性修改互不影响
    # 对象对于类变量(静态字段)的修改,对象之间也互不影响,也不影响类中的静态字段,只是相当于在自己的存储空间内封装了一条新的属性
    # 以后对于这个字段的使用,每个对象都先访问自己的存储空间,有就用自己的,没有再去用类中的
    obj1.age = 123
    Foo.age = 2333

    使用情况:

    如果对象中有一些相同的值,同时修改同时删除,就可以提取为类变量

    私有变量和共有变量

  • 相关阅读:
    C++11特性
    DBC文件小结
    关于宏定义
    CentOS 6.5下Zabbix的安装配置
    CentOS下搭建LAMP环境详解
    VS2010中汉字拷贝到Word出现乱码问题解决
    DLL注入
    数组赋值
    CDC的StretchBlt函数载入位图时图片失真问题
    2019年下半年Web前端开发初级理论考试
  • 原文地址:https://www.cnblogs.com/canaan233/p/13750181.html
Copyright © 2011-2022 走看看