python继承

python基础学习笔记(十)

会有一股神秘感。 提交于 2020-04-01 02:09:16
魔法方法、属性 ------------------------ 准备工作 为了确保类是新型类,应该把 _metaclass_=type 入到你的模块的最开始。 class NewType(Object):   mor_code_here class OldType:   mor_code_here 在这个两个类中NewType是新类,OldType是属于旧类,如果前面加上 _metaclass_=type ,那么两个类都属于新类。 构造方法 构造方法与其的方法不一样,当一个对象被创建会立即调用构造方法。创建一个python的构造方法很简答,只要把init方法,从简单的init方法,转换成魔法版本的_init_方法就可以了。 class FooBar: def __init__(self): self.somevar = 42 >>> f =FooBar() >>> f.somevar 42 重写一个一般方法 每一个类都可能拥有一个或多个超类(父类),它们从超类那里继承行为方法。 class A: def hello(self): print 'hello . I am A.' class B(A):   pass >>> a = A() >>> b = B() >>> a.hello() hello . I am A. 因为B类没有hello方法,B类继承了A类,所以会调用A

python--初识面向对象

≡放荡痞女 提交于 2020-03-30 21:33:12
一 . 初识面向对象 面向过程:   一切以事务的发展流程为中心. 面向对象:   一切以对象为中心. 一切皆为对象. 具体的某一个事务就是对象 打比方:   大象进冰箱     步骤: 第一步, 开门, 第二步, 装大象, 第三步, 关门     面向对象:大象, 你进冰箱.       此时主语是大象. 我操纵的是大象. 此时的大象就是对象 二 . 类.对象 类: 就是图纸. 创建对象的第一步. 先画图纸. 先写类.   对象: 对象就是车. 通过图纸造出来的具体的东西. 通过类来创建对象   类与对象的关系:     类是对xxx事物的归类.       写:         __init__(self, 参数) 参数一般作为属性设置给对象. 对象就是self, 对属性的封装.         def 方法(self, 参数): 方法. 第一个参数一般是固定的self. 当前类的对象.           pass     对象是xx类型的一个具体       创建对象: 类名() 创建类:     class 类名:       def __init__(self): # 初始化方法. 又被成为构造方法         self.属性 = 值         self.属性 = 值         self.属性 = 值       def fangfa(self):   

Python--初识面向对象

↘锁芯ラ 提交于 2020-03-30 21:24:08
1.初识面向对象class Person: #定义一个人类 role = 'person' #人的角色属性都是人 def __init__(self,name): self.name = name # 每一个角色都有自己的昵称; def walk(self): #人都可以走路,也就是有一个走路方法 print("person is walking...")print(Person.role) #查看人的role属性print(Person.walk) #引用人的走路方法,注意,这里不是在调用实例化的过程就是类——>对象的过程语法:对象名 = 类名(参数)2.创建一个类就会创建一个类的名称空间,用来存储类中定义的所有名字,这些名字称为类的属性而类有两种属性:静态属性和动态属性静态属性就是直接在类中定义的变量动态属性就是定义在类中的方法创建一个对象/实例就会创建一个对象/实例的名称空间,存放对象/实例的名字,称为对象/实例的属性3.面向对象的三大特性:继承,多态,封装Python的类如果继承了多个类,那么其寻找方法的方式有两种,分别是:深度优先和广度优先封装:封装属性方法抽象类,接口类. 抽象类就是一种规范. from abc import ABCMeta,abstractmethod class Payment(metaclass=ABCMeta): # 抽象类 接口类 规范和约束

全网最详细的Python学习笔记,值得收藏

邮差的信 提交于 2020-03-28 12:25:36
我总结了python已下点: 面向对象 类和对象的创建 属相相关 方法相关 元类 内置的特殊属性 内置的特殊方法 PS注意:不管你是为了Python就业还是兴趣爱好,记住:项目开发经验永远是核心,如果你缺新项目练习或者没有python精讲教程,可以去小编的Python交流.裙 :七衣衣九七七巴而五(数字的谐音)转换下可以找到了,里面很多新教程项目,还可以跟老司机交流讨教! 类和对象的创建 类 # 经典类 没有继承 object的类 # 新式类 继承了 object的类 class Money: # 2.x中默认是经典类,3.x中是新式类 pass class Money(object): # 兼容的一种写法 pass # Money既是类的__name__属性名,又是一个引用该类的变量 print(Money.__name__) # Money xxx = Money print(xxx.__name__) # Money 对象 one = Money() print(one) # <__main__.Money object at 0x000001555E9534A8> print(one.__class__) # <class '__main__.Money'> 属性相关 对象属性 class Person: pass p = Person() # 给 p对象增加属性,

史上最全的Python面向对象知识点疏理

♀尐吖头ヾ 提交于 2020-03-27 17:19:03
python 面向对象技术简介 类: 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。 类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。 数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。 方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖,也称为方法的重写。 实例变量:定义在方法中的变量,只作用于当前实例的类。 另外要注意:不管你是为了Python就业还是兴趣爱好,记住:项目开发经验永远是核心,如果你缺新项目练习或者没有python精讲教程,可以去小编的Python交流.裙 :七衣衣九七七巴而五(数字的谐音)转换下可以找到了,里面很多新教程项目,还可以跟老司机交流讨教! 继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。 创建类 a 变量是一个类变量,它的值将在这个类的所有实例之间共享。你可以在内部类或外部类使用 P 访问。 第一种方法__init__()方法是一种特殊的方法,被称为类的构造函数或初始化方法,当创建了这个类的实例时就会调用该方法 self 代表类的实例,self 在定义类的方法时是必须有的

Python小技巧:用类写装饰器的正确方法,一般新手都不知道

一曲冷凌霜 提交于 2020-03-27 15:54:53
装饰器是一个返回函数的函数。写一个装饰器,除了最常见的在函数中定义函数以外,Python还允许使用类来定义一个装饰器。 pS注意:不管你是为了Python就业还是兴趣爱好,记住:项目开发经验永远是核心,如果你缺新项目练习或者没有python精讲教程,可以去小编的Python交流.裙 :七衣衣九七七巴而五(数字的谐音)转换下可以找到了,里面很多新教程项目,还可以跟老司机交流讨教! 1、用类写装饰器 下面用常见的写法实现了一个缓存装饰器。 def cache (func): data = {} def wrapper(*args, **kwargs): key = f '{func.__name__}-{str(args)}-{str(kwargs)})' if key in data : result = data.get( key ) print( 'cached' ) else : result = func(*args, **kwargs) data [ key ] = result print( 'calculated' ) return result return wrapper 看看缓存的效果。 @cache def rectangle_area(length, width): return length * width rectangle_area( 2 , 3 ) #

10个Python面试常问的问题

坚强是说给别人听的谎言 提交于 2020-03-26 22:59:45
概述 Python是个非常受欢迎的编程语言,随着近些年机器学习、云计算等技术的发展,Python的职位需求越来越高。下面我收集了10个Python面试官经常问的问题,供大家参考学习。 类继承 有如下的一段代码: class A(object): def show(self): print 'base show' class B(A): def show(self): print 'derived show' obj = B() obj.show() 如何调用类A的show方法了。 方法如下: obj.__class__ = A obj.show() __class__方法指向了类对象,只用给他赋值类型A,然后调用方法show,但是用完了记得修改回来。 方法对象 问题:为了让下面这段代码运行,需要增加哪些代码? class A(object): def __init__(self,a,b): self.__a = a self.__b = b def myprint(self): print 'a=', self.__a, 'b=', self.__b a1=A(10,20) a1.myprint() a1(80) 答案:为了能让对象实例能被直接调用,需要实现__call__方法 class A(object): def __init__(self, a, b): self.__a

如何使用python图形化界面wxPython

给你一囗甜甜゛ 提交于 2020-03-26 18:53:16
GUI库主要有三类:tkinter,wxPython和PyQt5,下面主要是针对wxPython的使用说明。 下面的操作均在win10 + pycharm上进行 wxPython的安装: pip install wxPython 同时还安装了两个依赖包:six和pillow 简单使用: 变量app就是我们的程序。 其次一定要注意大小写,尤其是Show的S import wx app = wx.App() frame = wx.Frame(None, title = "Hello,world!") frame.Show() app.MainLoop() 运行后的界面如下所示: 进一步,我们可以添加一个按钮: 通过定义一个MyFrame类来实现,这个类继承自wx.Frame类。 import wx class MyFrame(wx.Frame): def __init__(self, *args, **kw): wx.Frame.__init__(self, *args, **kw) self.button = wx.Button(self, label = "hello") app = wx.App() frame = MyFrame(None, title = "Hello,world!") frame.Show() app.MainLoop() 运行后的界面如下所示:

十条Python面试题陷阱,看看你是否会中招

妖精的绣舞 提交于 2020-03-26 15:33:11
每年的3-4月份是跳槽的高峰期,无论是应聘Python web开发,爬虫工程师,或是数据分析,还是自动化运维,都涉及到一些基础的知识!我挑了一些Python的基础面试题,看看你能不能的答上来,也许面试的同学用的着! 问题1:请问如何修改以下Python代码,使得下面的代码调用类A的show方法? 答:这道题的考点是类继承,只要通过__class__ 方法指定类对象就可以了。补充的代码如下: 问题2:请问如何修改以下Python代码,使得代码能够运行? 答:此题考察得是方法对象,为了能让对象实例能被直接调用,需要实现 __call__ 方法,补充代码如下: 问题3:下面这段代码的输出是什么? 答: 此题考察的是new和init的用法,使用 __new__ 方法,可以决定返回那个对象,也就是创建对象之前调用的,这个常见于于设计模式的单例、工厂模式。__init__ 是创建对象是调用的。 问题4:下面这段代码输出什么? 答: 此题考察的是列表和字典的生成。 问题5:下面这段代码输出什么? 答: 此题考察全局变量和局部变量。num 不是个全局变量,所以每个函数都得到了自己的 num 拷贝,如果你想修改 num ,则必须用 global 关键字声明。比如下面这样 问题6:如何使用一行代码交换两个变量值? 答: 问题7:如何添加代码,使得没有定义的方法都调用mydefault方法? 答:

大家都应该要知道的改善 Python 程序 91 个建议(一)

一曲冷凌霜 提交于 2020-03-26 11:33:14
第 1 章 引论 建议 1:理解 Pythonic 概念 Pythonic Tim Peters 的 《The Zen of Python》相信学过 Python 的都耳熟能详,在交互式环境中输入import this可以查看,其实有意思的是这段 Python 之禅的源码: d = {} for c in (65, 97): for i in range(26): d[chr(i+c)] = chr((i+13) % 26 + c) print "".join([d.get(c, c) for c in s]) 哈哈哈,相信这是大佬在跟我们举反例吧。 书中还举了一个快排的例子: def quicksort(array): less = [] greater = [] if len(array) <= 1: return array pivot =array.pop() for x in array: if x <= pivot: less.append(x) else: greater.append(x) return quicksort(less) + [pivot] + quicksort(greater) 代码风格 通过对语法、库和应用程序的理解来编写代码,充分体现 Python 自身的特色: 变量交换 a, b = b, a 上下文管理 with open(path, 'r