码迷,mamicode.com
首页 > 编程语言 > 详细

01月10日 四周三次【Python基础进阶】

时间:2018-01-10 21:30:31      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:访问   一个   参数表   外部   内部类   不同   --   共享   object   

2.8 类的属性
2.9 类的方法
3.0 类的内置方法

2.8 类的属性

类的组成

  • 类由属性和方法组成,类的属性是对数据的封装,类的方法是对类的行为的封装
    • 成员变量 -- 静态属性
    • 成员函数 -- 动态方法

      对象的创建

  • 创建对象的过程称之为实例化; 当一个对象被创建后, 包含三个方面的特性: 对象句柄,属性和方法
    • 句柄用于区分不同的对象
    • 对象的属性和方法与类中的成员变量和成员函数对应
  • obj = MyClass() # 创建类的一个实例(对象)通过对象来调用方法和属性

    类的属性

  • 类的属性按使用范围分为公有属性和私有属性,类的属性范围取决于属性的名称
  • 公有属性: 在类中和类外都能调用的属性
  • 私有属性: 不能在类外及被类以外的函数调用.
    • 定义方式: 以‘__‘双下划线开始的成员变量就是私有属性
    • 可以通过instance._classname__attribute方式访问
  • 内置属性: 由系统在定义类的时候默认添加的,由前后双下划线构成,dic, module
    class People(object):
    color = "yellow"
    __age = 30
    def think(self):
        self.color = ‘black‘
        print("I am a %s" %self.color)
        print("I am a thinker")
        print(self.__age)
    ren = People()
    ren.color = ‘黑人‘
    print(ren.color)
    ren.think()
    print(ren.__dict__)
    print(‘#‘ * 30)
    print(People.color)
    print(‘#‘ * 30)
    print(People.__dict__)

2.9 类的方法

类的方法

  • 方法的定义和函数一样, 但需要self作为第一个参数
  • 类方法为:
    • 公有方法
    • 私有方法
    • 类方法
    • 静态方法
  • 公有方法: 在类中和类外都能调用的方法
  • 私有方法: 不能被类的外部调用,在方法前面加上‘__‘双下划线就是私有方法
  • self参数: 用于区分函数和类的方法(必须有一个self),self参数表示执行对象本身
  • 类方法: 被classmethod()函数处理过的函数,能被类所调用,也能被对象所调用(是继承的关系)
  • 静态方法: 相当于"全局函数",可以被类直接调用,可以被所有实例化对象共享,通过staticmethod()定义,静态方法没有"self"参数
  • 装饰器
    • @classmethod
    • @staticmethod
      class People(object):
      color = "yellow"
      __age = 30
      def think(self):
      self.color = ‘black‘
      print("I am a %s" %self.color)
      print("I am a thinker")
      print(self.__age)
      def __talk(self):
      print("I am talking with Tom")
      @classmethod
      def test(self):
      print("this is class method")
      @staticmethod
      def test1():
      print("this is static method")
      jack = People()
      People.test()
      People.test1()

3.0 类的内置方法

python 内部类

  • 所谓内部类, 就是在类的内部定义的类,主要目的是为了更好的抽象现实世界
  • 例子:
    • 汽车是个类,汽车的底盘,轮胎也可以抽象为类,将其定义到汽车类中,则形成内部类,更好的描述汽车类,因为底盘,轮胎是汽车的一部分

      内部类的实例化方法

  • 方法1: 直接使用外部类调用内部类
    • object_name = outclass_name.inclass_name()
  • 方法2: 先对外部类进行实例化, 然后再实例化内部类
    • out_name = outclass_name()
    • in_name = out_name.inclass_name()
    • in_name.method()

      魔术方法

  • str(self)
  • 构造函数与分析函数
    • 构造函数:
      • 用于初始化类的内部状态,python提供的构造函数是init();
      • init()方法是可选的,如果不提供,python会给一个默认的init方法
    • 析构函数:
      • 用于解释对象占用的资源,python提供的析构函数是del();
      • del()也是可选的,如果不提供,则python会在后台提供默认析构函数

        垃圾回收机制

  • python采用垃圾回收机制来清理不再使用的对象;python提供gc模块释放不再使用的对象
  • python采用‘引用计数‘的算法方式来处理回收,即:当某个对象在其作用域内不再被其他对象引用的时候,python就自动清楚对象
  • gc模块的collect()可以一次性收集所有待处理的对象(gc.collect)

01月10日 四周三次【Python基础进阶】

标签:访问   一个   参数表   外部   内部类   不同   --   共享   object   

原文地址:http://blog.51cto.com/13542406/2059599

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!