1. 封装
- 类:飞机图纸—->只能用于定义而不能使用
- 属性
- 方法
- 对象:飞机—->用于使用
self:对象自己
self.attr = parameter
class Person:def __init__(self, name):#lname is attr rname is parameterself.name = namedef nickname(self):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:
#添加实例属性def __init__(self, name):self.name = name#添加实例方法def eat(self):print("%s needs to eat" %self.name)def drink(self):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 modulemodule.hello()找到module,执行module - 部分导入
from module import hellohello()找到module,执行module,导入hello()
import module #导入模块(中的所有工具(全局变量,函数,类)) 导入模块 module.hello()
from module import * #导入模块(中的所有工具(全局变量,函数,类)) 从模块中导入所有工具 hello()
from module import hello #导入模块中的部分工具(全局变量,函数,类) 从模块中导入部分工具 hello()
3. 导入过程:找到模块,执行模块
主函数
测试
if name=’main‘: print(name) ```
包(库)(package):导入包
1. 包:一个python文件目录含有__init__.py
2. 导入包
__init__.py:from . import module全部导入
import packagepackage.module.hello()
找到所有module,执行所有module部分导入
from package import modulemodule.hello()
找到所有module,执行所有module,导入module部分导入
from package.module import hello()hello()
找到所有module,执行所有module,导入hello()
