python继承

如何优化Python占用的内存

匿名 (未验证) 提交于 2019-12-02 22:51:30
概述 如果程序处理的数据比较多、比较复杂,那么在程序运行的时候,会占用大量的内存,当内存占用到达一定的数值,程序就有可能被操作系统终止,特别是在限制程序所使用的内存大小的场景,更容易发生问题。下面我就给出几个优化Python占用内存的几个方法。 说明:以下代码运行在Python3。 举个栗子 我们举个简单的场景,使用Python存储一个三维坐标数据,x,y,z。 Dict 使用Python内置的数据结构Dict来实现上述例子的需求很简单。 >>> ob = {'x':1, 'y':2, 'z':3} >>> x = ob['x'] >>> ob['y'] = y 查看以下ob这个对象占用的内存大小: >>> print(sys.getsizeof(ob)) 240 简单的三个整数,占用的内存还真不少,想象以下,如果有大量的这样的数据要存储,会占用更大的内存。 数据量 占用内存大小 1 000 000 240 Mb 10 000 000 2.40 Gb 100 000 000 24 Gb Class 对于喜欢面向对象编程的程序员来说,更喜欢把数据包在一个class里。使用class使用同样需求: class Point: # def __init__(self, x, y, z): self.x = x self.y = y self.z = z >>> ob = Point(1,2

Python 类抽象与继承 派生覆盖 组合 属性查找顺序 新式类菱形继承

匿名 (未验证) 提交于 2019-12-02 22:51:30
一 继承与抽象(类与类之间的关系) 1.什么是继承:在程序中继承是描述类与类之间的关系。例如:A类继承了B类,A类就能直接使用B类已经存在的方法和属性(A类称之为子类,B类称之为父类也叫基类) 2.为什么要使用继承:继承的一方可以直接使用被继承一方已经存在的方法和属性。其目的是为了提高代码的复用性。 3.继承语法 class 父类名称: 类的内容 class 子类名称(父类名称): 类的内容 #在python中 一个子类可以同时继承多个父类 View Code 抽象 1.什么是抽象:将多个子类中相同的属性和方法,进行抽取形成一个新的类。再有别的子类们进行继承。 2.例: class Teacher: school = "oldboy" def __init__(self,name,age): self.name = name self.age = age def say_hi(self): print("hello i am %s" % self.name) def teach(self): print("正在教书......") class Student(Teacher): pass # 问题:学生类继承了老师类,所以学生类都具备了老师类的name,age属性和say_hi,teacher方法。但是teacher方法应该是老师独有的,学生不应该具备。 # 解决:抽象 class

Python 的特性

匿名 (未验证) 提交于 2019-12-02 22:51:30
崔先生的博客 阅读数:240 2018-08-03 前言 Python 是一门兼具简单与功能强大的编程语言。你无须浪费时间去造轮子,它会让我们专注于如何去解决问题。它的灵活性、易用性、简洁性、丰富的资源使得它广泛应用在不同领域。近年来,随着人工智能的浪潮汹涌来袭,python当之无愧成了大家的宠儿,当然,在你简历上如果写着你会python,那么,面试官就会问你很多有关python语言的小问题,为了便于自己复习,笔者特意整理了python面试题系列(习题难易程度和顺序无关),希望在帮到自己的同时也帮到广大编程爱好者或者求职者。 话不多说,直接上题: 面试题 1.Python里面search()和match()的区别? match()函数只检测RE是不是在string的开始位置匹配,search()会扫描整个string查找匹配, 也就是说match()只有在0位置匹配成功的话才有返回,如果不是开始位置匹配成功的话,match()就返回none。 2.Python里面如何生成随机数? import random random.random() 它会返回一个随机的0和1之间的浮点数 global 语句被用来声明 x 是全局的――因此,当我们在函数内把值赋给 x 的时候,这个变化也反映在我们在主块中使用 x 的值的时候。你可以使用同一个 global 语句指定多个全局变量。例如

python经典笔试、面试题-01

匿名 (未验证) 提交于 2019-12-02 22:51:30
一、高德软件有限公司python试题及答案 1. 在python中, list, tuple, dict, set有什么区别, 主要应用在什么样的场景? 定义: mylist = [1, 2, 3, 4, 'Oh'] mytuple = (1, 2, 'Hello', (4, 5)) mydict = {'Wang' : 1, 'Hu' : 2, 'Liu' : 4} myset = set(['Wang', 'Hu', 'Liu', 4, 'Wang']) 前每日优鲜python全栈开发工程师开始辅导python啦 2. 静态函数, 类函数, 成员函数、属性函数的区别? 定义: 属性函数:通过@property把一个方法变成一个静态属性。 具体应用: 日期的方法, 可以通过实例化(__init__)进行数据输出, 传入参数self; 可以通过类的方法(@classmethod)进行数据转换, 传入参数cls; 可以通过静态方法(@staticmethod)进行数据验证; 2.1静态方法举例: 1 class People(object): 2 Name="类变量名" 3 def __init__(self,name): 4 self.name=name 5 @staticmethod 6 def run(self): 7 print("%s is a staticmethod"

Python学习(类属性与实例属性)

匿名 (未验证) 提交于 2019-12-02 22:51:30
编程语言都围绕着实例(对象),函数关系,及作用域展开(对象的生命周期) Python的import sys或者其它类似于c语言编译时的链接过程,不在同一个文件中的函数关系,我们怎样才能利用到它 Python的类跟c++的类基本是同一个东西,Python没有protected的权限,只有private和public,感觉友好很多 实例属性与c++的普通成员相同,类属性则类似于静态成员(static变量),初始化一次,通过类名访问和修改,所有的实例维护类的同一份的static成员变量 __init__类似于构造函数,self类似于this指针 封装继承大体相同,调用时会先调子类的重载函数,子类无则调父类的该函数 class vehicle(): class car(vehicle): o1 = car() o1.out() class Student(object): if Student.count != 0: else: 随便照着书练习了下,感觉很神奇

python学习――Day5

匿名 (未验证) 提交于 2019-12-02 22:51:30
5.1__init__ #__init__()可以在类里面初始化 class shemale_cai : def __init__ ( self ) : self . gender = '女' self . age = 1 def print_info ( self ) : print ( f '蔡徐坤是一名篮球巨星,性别 {self.gender} 年龄 {self.age}' ) caixukun = shemale_cai ( ) caixukun . print_info ( ) 5.2__init__带参数 class television ( ) : def __init__ ( self , width , height ) : self . width = width self . height = height def print_info ( self ) : print ( f '电视机的宽度为{self.width}' ) print ( f '电视机的高度为{self.height}' ) sony = television ( 30 , 20 ) sony . print_info ( ) 5.3__str__() class television ( ) : def __init__ ( self , width , height ) : self .

Python之定义类并创建实例

匿名 (未验证) 提交于 2019-12-02 22:51:30
在Python中,类通过 class 关键字定义。以 Person 为例,定义一个Person类如下: class Person(object): pass 类名以大写字母开头(如Person)并且如果有两个单词组成的类名,第二个单词的首字母也应该大写(如StudentHomework)。紧接着是(object),表示该类是从哪个类继承下来的。 class Person(object) 是新式类,object是固定写法。经典类用class Person: 形式定义Python类不一定要继承另一个类。 有了Person类的定义,就可以创建出具体的xiaoming、xiaohong等实例。创建实例使用 类名+(),类似函数调用的形式创建: xiaoming = Person() xiaohong = Person() 任务: 定义Person类,并创建出两个实例,打印实例,再比较两个实例是否相等。 class Person(object): pass xiaoming = Person() # 类的实例化 xiaohong = Person() print(xiaoming) print(xiaohong) print(xiaoming == xiaohong) 结果为: < main .Person object at 0x00000000029DB400> < main

python基本用法

匿名 (未验证) 提交于 2019-12-02 22:51:30
PYTHONPATH PYTHONPATH是python moudle的搜索路径.即import xxx会从$PYTHONPATH寻找xxx. #coding=utf-8 import a_module print(a_module.__file__) map(function, iterable, ...) 参数 function -- 函数 iterable -- 一个或多个序列 返回值 Python 2.x 返回列表。 Python 3.x 返回迭代器。 >>>def square(x) : # 计算平方数 ... return x ** 2 ... >>> map(square, [1,2,3,4,5]) # 计算列表各个元素的平方 [1, 4, 9, 16, 25] >>> map(lambda x: x ** 2, [1, 2, 3, 4, 5]) # 使用 lambda 匿名函数 [1, 4, 9, 16, 25] # 提供了两个列表,对相同位置的列表数据进行相加 >>> map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10]) [3, 7, 11, 15, 19] What is :: (double colon) in Python when subscripting sequences? https:/

python 类变量访问相关

匿名 (未验证) 提交于 2019-12-02 22:51:30
class a(): 能够访问到类变量的操作: # 1. a.aa # 2. aobj = a() aobj.aa # 3. class b(a): b.aa # 4. bobj = b() bobj.aa 重新赋值: a.aa = 2,影响所有 b.aa = 2, 影响bobj.aa aobj或bobj, 只影响自己 结论: 实际上是一个向上溯源的过程。 例如bobj.aa,先找b有没有实例变量self.aa; 没有找到,则找超类有没有实例变量self.aa; 没有找到,则找b有没有类变量b.aa; 没有找到,则找超类有没有类变量a.aa。 b.aa也是类似的过程,只不过只找类变量。 发生重新赋值a.aa = 2,bobj.aa向上溯源能够继承改变; 但一旦发生赋值bobj.aa = 3,相当于创建了实例变量self.aa;此后a.aa将不会影响bobj.aa; 实例不会影响类,aobj.aa = 4不会在类a中加一个定义的实例变量,故也不会影响bobj.aa; 实例变量就是一份复制,不会互相影响。