01月10日 四周三次Python基础进阶
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了01月10日 四周三次Python基础进阶相关的知识,希望对你有一定的参考价值。
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基础进阶的主要内容,如果未能解决你的问题,请参考以下文章