python继承

Python——面向对象

删除回忆录丶 提交于 2020-04-08 12:48:15
面向对象特点: 1. class 后首写字母必须大写 2. self为实例化对象的内存指向,每个方法默认必须有。必须要注意每一个self的内存对象指的是哪一个,还有就是在哪个方法内使用的。 基础格式: class Foo(object): #class + 类名称(首字母大写)(object为生成内存地址使用,py3不写也可以,py2必须写) def __init__(self,name,age,): #初始化,在执行序列化时,就需要执行初始化过程。 self.name = name #将对象和导入的参数进行对应。 self.age = age def func(self): print(self.name,self.age) #调用类的变量。 obj1 = Foo('xuan',22) #序列化一个类,并赋值给obj1这个变量中。 obj1.func() #运行obj1内的方法。 三大特点: 1. 封装 1. 将多个相同类型的方法封装到一个类中,使其统一,2. 将常用变量保存在类中,以供方法调用。 class Foo(object): name = 'xuan' #将常用变量存在类中,方便方法调用 def func(self): print(self.name) obj1 = Foo() print(obj1.name) 2. 继承 将一个或多个类关联到一起

通俗讲解让你秒懂Python里的面向对象继承

我的未来我决定 提交于 2020-04-06 16:41:22
面向对象编程 (OOP),英语全称:Object Oriented Programming,面向对象编程的一个主要功能就是“继承”。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。 继承,其实这样理解,就是我写了一个爸爸类和儿子类,爸爸有钱,儿子却没钱,于是儿子决定继承爸爸,调用爸爸的钱(爸爸类的变量和方法)。 继承一个类,基本使用下面的五个方法。 1、直接调用父类属性方法 爸爸有钱,儿子却没钱,于是儿子用爸爸的钱 class Father(): def __init__(self): self.money= 1000 def action(self): print('调用父类的方法') class Son(Father): pass son=Son() # 子类Son 继承父类Father的所有属性和方法 son.action() # 调用父类属性 输出:调用父类的方法 son.money # 调用父类属性 输出:1000 2、强制调用父类私有属性方法 爸爸说,你这个儿子,老是用我的钱,我决定藏私房钱。儿子试试super()拿你的私房钱,但是这里需要注意super()强制调用父类私有属性方法,就是重写方法,私有变量是不能用supper继承不了,还不可以访问父类中的私有属性方法的变量,就是儿子是拿不了私房钱的。 class

python第八天

不想你离开。 提交于 2020-04-06 07:18:18
看来北方之前表现的太中二了,上一篇阅读量才只有1,唉,其实这两个礼拜特别忙,所以学习进度相比之前缓慢很多,平均一周才能学习人家一周的东西(以前只需要3天就能学人家一周的东西,谁让这个破机房没事就迁移,迁移完了还给北方出事,出事了居然还要北方亲自解决,真是B了狗了),其实第八天没作业,我是看完下一篇有了新作业才顺道把这篇补上,这篇也没什么好写的,还是类,对,就是类,类这个东西我现在根本写不出来什么高大上的东西,只能记录一下它的一些基本特征啊什么的 面向对象的三大特性: 封装:就是类内的函数,这里称之为对象~~~ 继承:类可以继承其他类的功能,当然有继承顺序( 3.5的继承顺序 ),取2个最具有代表性的 多态:在python没有什么用,大体意思就是类在传递参数的时候其他语言是需要指定该参数类型的,比如参数A必须是int,B是str,这样的好处就是其他人使用时可以很快速确定这个类的每个参数的类型,知道类型后我们就可以知道相对应方法了嘛,就可以快速的对数据进行处理操作,但是Python中是没有这个要求的。补充:继承后是可以使用父类的数据类型的 1 python: 2 def func(arg): 3 print(arg) 4 5 func(1) #不会有问题 6 func('ace') #不会有问题 7 func([1,2,3]) #不会有问题 8 9 10 c# java 11 def

Python 天天美味(37) - 让python的unittest像gtest一样输出

落爺英雄遲暮 提交于 2020-04-04 12:21:18
Python自带的unittest已经很简单易用了,不过我一直不喜欢的是它的命令行输出,格式显得有点乱。而我比较喜欢的是gtest的命令行输出格式,用不同的颜色进行标识,整齐划一,非常明了。于是,我扩展一下Python的unittest模块,让它也能输出和gtest一样好看的命令行结果。 首先,我们先来看看unittest默认的命令行输出结果。这里,我先随便写两个测试案例,让其中一个通过,另外一个不通过,然后查看一下测试结果。 import unitest class FooTest(unittest.TestCase): def setUp(self): self.a = 1 def testPass(self): self.a = self.a + 1 self.assertEqual( 2 , self.a) def testFail(self): self.a = self.a + 1 self.assertEqual( 3 , self.a) main函数,调用unittest自己的TextTestRunner: if __name__ == ' __main__ ' : unittest.main() 输出的结果: 有点凌乱(当然,可能你并不觉得),好的,接下来开始实现一个自定义的TestRunner,让unittest输出和gtest一样,使用不同的颜色。

python学习之继承

走远了吗. 提交于 2020-04-04 09:44:35
class P(object): 'P class' def __init__(self): print('created an instance of',self.__class__.__name__) def foo(self): print('Hi,I am P-foo()')class C(P): def foo(self): P.foo(self) #子类的重写方法显式地调用基类方法 super(C,self).foo() #P.foo(self)等价super(C,self).foo()等价super().foo() super().foo() print('Hi,I am C-foo()')p=P()c=C()# print(p.__class__) # p所属的类名# print(P.__bases__) # 父类的父类# print(P.__doc__) # 父类的文档字符串# print('-'*50)# print(c.__class__) # c所属的类名# print(C.__bases__) # 子类的父类print('-'*50)# p.foo() #实例调用方法# c.foo() #子类调用基类的覆盖方法# P.foo(c) #调用未绑定的基类方法,把子类实例传参进去c.foo() 来源: https://www.cnblogs.com

初识python

送分小仙女□ 提交于 2020-04-03 11:47:34
python简介: 一、 什么是python Python(英国发音:/ pa θ n/ 美国发音:/ pa θɑ n/),是一种面向对象、直译式的计算机程序语言。 每一门语言都有自己的哲学: pythonde 设计哲学是:“优雅”、“明确”、“简单” 二、python由来 1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。之所以选中Python作为程序的名字,是因为他是BBC电视剧——蒙提·派森的飞行马戏团(Monty Python‘s Flying Circus)的爱好者。 三、Python能做什么 Web程序 Python经常被用于Web开发。比如,通过mod_wsgi模块,Apache可以运行用Python编写的Web程序。使用Python语言编写的Gunicorn作为Web服务器,也能够运行Python语言编写的Web程序。Python定义了WSGI(Web Server Gateway Interface)标准应用接口来协调Http服务器与基于Python的Web程序之间的沟通。一些Web框架,如Django、Pyramid、TurboGears、Tornado、web2py、Zope、Flask等,可以让程序员轻松地开发和管理复杂的Web程序。 Python对于各种网络协议的支持很完善

Python开发基础-Day20继承实现原理、子类调用父类的方法、封装

北城余情 提交于 2020-04-03 01:56:49
继承实现原理 python中的类可以同时继承多个父类,继承的顺序有两种:深度优先和广度优先。 一般来讲,经典类在多继承的情况下会按照深度优先的方式查找,新式类会按照广度优先的方式查找 示例解析: 没有共同头部父类的类型 1 class E: 2 def test(self): 3 print('from E') 4 # pass 5 class F: 6 def test(self): 7 print('from F') 8 # pass 9 10 class C: 11 def test(self): 12 print('from C') 13 # pass 14 15 class B(C): 16 def test(self): 17 print('from B') 18 # pass 19 20 class D(E): 21 def test(self): 22 print('from D') 23 # pass 24 class A(B,D,F): 25 def test(self): 26 print('from A') 27 # pass 28 obj=A() 29 obj.test() 在这种模型下,新式类和经典类的继承顺序都一样。 调用obj.test(),首先找boj对象的__dict__字典,然后找生成类A的__dict__字典,如果这两个都没有

python面向对象编程

泪湿孤枕 提交于 2020-04-02 09:32:34
一,什么是面向对象编程 面向对象的程序设计的核心是对象 面向对象编程可以使程序的维护和扩展变得更简单,并且可以大大提高程序开发效率 ,另外,基于面向对象的程序可以使它人更加容易理解你的代码逻辑,从而使团队开发变得更从容。 二,类和对象 python中一切皆为对象,数据类型的本质就是类。 在python中,用变量表示特征,用函数表示技能,因而具有相同特征和技能的一类事物就是‘类’,对象是则是这一类事物中具体的一个。 声明类: ''' class 类名: '类的文档字符串' 类体 ''' 类有两种作用:属性引用和实例化 属性引用(类名.属性) class Person: #定义一个人类 role = 'person' #人的角色属性都是人 def walk(self): #人都可以走路,也就是有一个走路方法 print("person is walking...") print(Person.role) #查看人的role属性 print(Person.walk) #引用人的走路方法,注意,这里不是在调用 实例化:类名加括号就是实例化,会自动触发__init__函数的运行,可以用它来为每个实例定制自己的特征 class Person: #定义一个人类 role = 'person' #人的角色属性都是人 def __init__(self,name): self.name = name

python之旅:元类metaclass

烈酒焚心 提交于 2020-04-02 05:53:08
廖老师元类:http://www.cnblogs.com/moyand/p/8868857.html 一 知识储备 exec:三个参数 参数一:字符串形式的命令 参数二:全局作用域(字典形式),如果不指定,默认为globals() 参数三:局部作用域(字典形式),如果不指定,默认为locals() #可以把exec命令的执行当成是一个函数的执行,会将执行期间产生的名字存放于局部名称空间中 g={ 'x':1, 'y':2 } l={} exec(''' global x,z x=100 z=200 m=300 ''',g,l) print(g) #{'x': 100, 'y': 2,'z':200,......} print(l) #{'m': 300} exec的使用 二 引子(类也是对象) class Foo: pass f1=Foo() #f1是通过Foo类实例化的对象 python中一切皆是对象,类本身也是一个对象,当使用关键字class的时候,python解释器在加载class的时候就会创建一个对象(这里的对象指的是类而非类的实例),因而我们可以将类当作一个对象去使用,同样满足第一类对象的概念,可以: 把类赋值给一个变量 把类作为函数参数进行传递 把类作为函数的返回值 在运行时动态地创建类 上例可以看出f1是由Foo这个类产生的对象,而Foo本身也是对象

面向对象的进阶(组合和继承)

感情迁移 提交于 2020-04-01 03:22:27
初始面向对象之后,我们来学习面向对象的三大特性以及面向对象的其他补充方面的知识。 组合 组合只有一个例子因为组合只作为上一章的补充内容 #老师 课程 生日 class Course: def __init__(self,name,period,price): self.name = name self.period = period self.price = price class Birth: def __init__(self,year,month,day): self.year = year self.month = month self.day = day class Teacher: def __init__(self,name,salary,boy_friend,python): self.name = name self.salary = salary self.bf = boy_friend self.course = python python = Course('python','6 months',20000) egg = Teacher('egon',200,'yuan',python) print(egg.bf) print(egg.name) print(egg.course.name) egg_birth = Birth(1965,2,2) print