1. 封装

  • 类:飞机图纸—->只能用于定义不能使用
  • 属性
  • 方法
  • 对象:飞机—->用于使用
  • self:对象自己

  • self.attr = parameter

    1. class Person:
    2. def __init__(self, name):
    3. #lname is attr rname is parameter
    4. self.name = name
    5. def nickname(self):
    6. print(self.name)
  • def method(self, parameter):

  • 内置方法(魔幻方法)

    • __init__ :构造函数(初始化方法)
    • __del__:对象被销毁时自动调用
    • __str__:打印对象时自动调用(该方法必须返回一个字符串)
  • object = class()

    • 分配空间存放对象
    • object指向那块空间,self也会指向那块空间
    • 对对象进行初始化

2. 继承

  • 单继承
  • 多继承
  • 重写

    • 覆盖
    • 拓展:super().pmethod()
  • 所有类默认继承object类

3. 多态

实战案例:People_and_Animal

```python

封装

class Animal:

  1. #添加实例属性
  2. def __init__(self, name):
  3. self.name = name
  4. #添加实例方法
  5. def eat(self):
  6. print("%s needs to eat" %self.name)
  7. def drink(self):
  8. print("%s needs to drink" %self.name)

继承

class Cat(Animal): pass

继承-重写

class Dog(Animal): def eat(self): print(“%s needs to bite” %self.name) def drink(self): super().drink() print(“it’s dog’s drinking way”)

class Person: def init(self, name): self.name = name def play_with_animal(self, animal): print(“%s palys with %s” %(self.name, animal.name)) animal.eat()

——————————————————对象(类的实例化)———————————————————

多态

tom = Cat(‘tom’)

tom = Dog(‘tom’)

jerry = Person(“jerry”) jerry.play_with_animal(tom)




<a name="803fdd3d"></a>
### 4. 类属性,类方法

- 类属性,类方法:关于类的属性和方法
- 实例属性,实例方法:关于实例的属性和方法
- **创建对象的过程:**未解决

   - `__new__()`
   - `__init__(self)`

<a name="f3b7661b"></a>
### 5. 私有属性,私有方法,静态方法

- 私有属性,私有方法:不能被外界访问
- 静态方法:与self,cls无关

> 案例实战:animal

> ```python
class Animal:
    # 添加类属性
    count = 0

    # 添加类方法
    @classmethod
    def show_animal_count(cls):
        print(cls.count)

#--------------------------------------#

    # 添加实例属性
    def __init__(self, name):
        self.name = name
        Animal.count += 1

    # 添加实例方法
    def eat(self):
        print("%s needs to eat" % self.name)

    # 添加静态方法
    @staticmethod
    def drink():
        print("animal need to drink")


if __name__ == '__main__':
    Animal.drink()
    cat = Animal("cat")
    cat.__secret = 1
    # print(cat.count)
    print(Animal.count)

6.常用方法

  • print(object):查看外置object的类型和在内存中的位置
    id():查看变量在内存中的位置
    type():查看变量的类型

  • dir():查看对象的属性和方法

  • object.__mro__

  • module.__file__:查看模块所在的路径


模块(module):导入模块

1. 模块:一个python文件

2. 导入模块

  • 全部导入 import module module.hello() 找到module,执行module
  • 部分导入 from module import hello hello() 找到module,执行module,导入hello()
import module             #导入模块(中的所有工具(全局变量,函数,类))    导入模块       module.hello()
from module import *      #导入模块(中的所有工具(全局变量,函数,类))     从模块中导入所有工具  hello() 
from module import hello  #导入模块中的部分工具(全局变量,函数,类)    从模块中导入部分工具    hello()

3. 导入过程:找到模块,执行模块

  • 搜索路径

    • 所在目录—->系统目录
    • module.__file__:查看模块所在的路径
  • 执行模块

    • __name__:模块名

    • ```python

      定义全局变量

      定义类

      定义函数

主函数

测试

if name=’main‘: print(name) ```

包(库)(package):导入包

1. 包:一个python文件目录含有__init__.py

2. 导入包

  • __init__.pyfrom . import module

  • 全部导入 import package package.module.hello()
    找到所有module,执行所有module

  • 部分导入 from package import module module.hello()
    找到所有module,执行所有module,导入module

  • 部分导入 from package.module import hello() hello()
    找到所有module,执行所有module,导入hello()

3. 导入过程