linux python3(面向对象)

面向对象编程

模板
class Cat:
#属性
#方法
def eat(self):
print("猫吃鱼")
def drink(self):
print("猫喝水")
def introduce(self):
print(self.name,self.age)
#创建对象
tom = Cat()
tom.eat()
tom.drink()

对象

具体内容 对象:函数和全局变量的封装 函数:部分功能模块的封装

谁调用self,self是哪个对象

init方法

创建对象之后,python自动调用init方法,将self指向刚创建对象的引用(地址),返回初始化之后的引用给tom
def init

str方法

获取对象的描述(属性)信息
def str

对象间传递属性

私有方法 私有属性

在属性和方法前面加上两个下划线 "__test"
私有方法需要被共有方法判断之后被调用

def del: 方法

在对象被销毁之前调用del方法

继承

class A(object):
class B(A): 代表B类继承A类
私有方法不会被继承
私有属性不会被继承
使用同一个类中的公有方法调用私有方法

重写

重写父类的方法
调用父类的方法 super().方法

多继承

class C(A,B):
类名.mro 决定调用一个方法时的顺序

多态

类属性、实例属性

类属性可以在多个实例对象间共享
实力属性只能在本实例对象中共享

类方法、实例方法、静态方法

定义类方法
@classmethod
def add_num(cls)
调用类方法 类名.方法名() 或对象.方法名()

@staticmethod 与类无关 但放在类中的静态方法
def print_menu():
调用类方法 类名.方法名() 或对象.方法名()

new方法

调用new方法创建对象
调用init方法初始化对象
调用del方法删除对象

单例

创建多个对象时,指向同一个对象。通过重写new方法来实现
def new(cls):
__instance = None
if cls.__instance == None: #判断是否第一次
cls.__instance ==object.new(cls)
return cls.__instance
else:

return 上一次创建的对象的引用

return cls.__instance

异常处理

try:

except 异常名: 如(NameError,FileNotFoundError)
若抛出的异常与定义的异常名字不一样,那就采用系统默认的异常来处理
except Exception: 只要以上异常不满足,都采用这个异常处理

except 异常名 as 变量名: 异常的核心原因放到变量中

else: 没有异常才会执行
finally: 不管有无异常,都会执行

异常传递

抛出自定义异常

raise 抛出异常

模块

导入模块后,将模块翻译成二进制,保存成缓存形式(字节码pyc),为了保证下次程序时高效运行
import A as 别名 #当模块名太长时使用别名
from A import test1,test2
from A import *
先搜索当前路径,再搜索系统指定路径

模块中的__name__变量、__all__变量

name若是自身模块那么name的值为main,若为其他模块则是其他模块名。
all = ["函数功能名1",“函数功能名2”] 允许被其他模块调用的内容

包、init.py(python2)

在文件夹下创建__init__py,导入模块时能够被导入
init.py中写入__all__ = ["指定要使用的模块"]

模块发布、安装

创建setup.py,写入要发布的模块
python3 setup.py build 执行发布模块命令,将模块安装到python3中
python3 setup.py sdist 生产tar.gz压缩包
python3 setup.py install 安装到了系统目录

给程序传参

import sys
sys.argv接收参数

列表生成式

a = [i for i in range(1,5)]
a = [1,2,3,4]
a = [11 for i in range(1,5)]
a = [11,11,11,11]

集合

集合用花括号,并且里面的元素不重复,例 a={1,1,2,2} ==》 {1,2}
可以用于列表中元素去重

原文地址:https://www.cnblogs.com/mayiyi/p/14441528.html