python继承

在Python中具有多个构造函数的一种干净的pythonic方法是什么?

给你一囗甜甜゛ 提交于 2019-12-28 19:39:50
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 我找不到确切的答案。 据我所知,Python类中不能有多个 __init__ 函数。 那么我该如何解决这个问题呢? 假设我有一个名为 Cheese 的类,具有 number_of_holes 属性。 我如何有两种创建奶酪对象的方式... 一个有很多这样的洞的人: parmesan = Cheese(num_holes = 15) 还有一个不带参数的参数,只是将 number_of_holes 属性随机化: gouda = Cheese() 我只能想到一种执行此操作的方法,但这似乎很笨拙: class Cheese(): def __init__(self, num_holes = 0): if (num_holes == 0): # randomize number_of_holes else: number_of_holes = num_holes 你说什么? 还有另一种方法吗? #1楼 我会使用继承。 尤其是如果差异大于孔数。 特别是如果Gouda将需要与Parmesan拥有不同的成员集。 class Gouda(Cheese): def __init__(self): super(Gouda).__init__(num_holes=10) class Parmesan(Cheese): def _

pymysql和MySQLdb

有些话、适合烂在心里 提交于 2019-12-28 11:31:23
MySQLdb创建mysql数据库表 其实mysqldb创建表是有限制的,要求是5.1-5.5版本 pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同。 1.下载 首先要下载下载:请到官方网站http://sourceforge.net/projects/mysql-python/或者点击链接下载http://downloads.sourceforge.net/project/mysql-python/mysql-python-test/1.2.3c1/MySQL-python-1.2.3c1.tar.gz?use_mirror=nchc 2.解压安装 解压:tar zxvf MySQL-python* 进入文件目录,运行以下命令: python setup.py install 3. 用法 ''' # 打开数据库连接 db = MySQLdb.connect("192.168.72.131","root","123456","test" ) # 使用cursor()方法获取操作游标 cursor = db.cursor() # 如果数据表已经存在使用 execute() 方法删除表。 cursor.execute("DROP TABLE IF EXISTS EMPLOYEE") # 创建数据表SQL语句 sql = \"\"\"CREATE

35个高级python知识点

痞子三分冷 提交于 2019-12-28 04:49:57
No.1 一切皆对象 众所周知,Java中强调“一切皆对象”,但是 Python 中的面向对象比Java更加彻底,因为Python中的类(class)也是对象,函数(function)也是对象,而且Python的代码和模块也都是对象。 Python中函数和类可以赋值给一个变量 Python中函数和类可以存放到集合对象中 Python中函数和类可以作为一个函数的参数传递给函数 Python中函数和类可以作为返回值 Step.1 # 首先创建一个函数和一个Python3.x的新式类 class Demo(object): def __init__(self): print("Demo Class") # 定义一个函数 def function(): print("function") # 在Python无论是函数,还是类,都是对象,他们可以赋值给一个变量 class_value = Demo func_value = function # 并且可以通过变量调用 class_value() # Demo Class func_value() # function Step.2 # 将函数和类添加到集合中 obj_list = [] obj_list.append(Demo) obj_list.append(function) # 遍历列表 for i in obj_list: print

一.Python概述

做~自己de王妃 提交于 2019-12-28 02:08:41
目录 1 Python 起源 2为什么要用 Python? 3Python 的优缺点 4 HelloPython 程序 5 注释 1. Python 起源 Python 的创始人为吉多·范罗苏姆(Guido van Rossum) 1989 年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的 解释程序 ,作为 ABC 语言的一种继承。 ABC 是由吉多参加设计的一种教学语言,就吉多本人看来,ABC 这种语言非常优美和强大,是 专门为非专业程序员设计的 。但是 ABC 语言并没有成功,究其原因,吉多认为是 非开放 造成的。吉多决心在 Python 中避免这一错误,并获取了非常好的效果。 之所以选中 Python(蟒蛇) 作为程序的名字,是因为他是 BBC 电视剧——蒙提·派森的飞行马戏团(Monty Python's Flying Circus)的爱好者 1991 年,第一个 Python 解释器 诞生,它是用 C 语言实现的,并能够调用 C 语言的库文件 1.1 编译型语言和解释型语言 计算机不能直接理解除机器语言以外的任何语言,所以必须要把程序员所写的程序语言翻译成机器语言,计算机才能执行程序。 将将其他语言翻译成机器语言的工具,我们称之为编译器。 编译器翻译的方式有两种: 编译 和 解释 。 当编译器 以解释方式运行的时候 ,也称之为 解释器 编译型语言

python面对对象三大特性

一笑奈何 提交于 2019-12-27 20:02:48
面对对象三大特性是:封装,继承,多态 封装: 也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。封装是面向对象的特征之一,是对象和类概念的主要特性。 简单的说,一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。在一个对象内部,某些代码或某些数据可以是私有的,不能被外界访问。通过这种方式,对象对内部数据提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分。 继承: 是指可以让某个类型的对象获得另一个类型的对象的属性的方法。它支持按级分类的概念。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。 通过继承创建的新类称为“子类”或“派生类”,被继承的类称为“基类”、“父类”或“超类”。继承的过程,就是从一般到特殊的过程。要实现继承,可以通过“继承”(Inheritance)和“组合”(Composition)来实现。继承概念的实现方式有二类:实现继承与接口继承。实现继承是指直接使用基类的属性和方法而无需额外编码的能力;接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力; 多态: 就是指一个类实例的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。这意味着,虽然针对不同对象的具体操作不同

(8)python 类和对象

主宰稳场 提交于 2019-12-27 18:55:58
一、类和对象 python可以动态的添加删除变量和方法 类中的方法至少要有一个参数,第一个参数会被绑定到类的实例上,通常命名为self 1.构造函数 类中的构造方法名为 __init__(self,...,...),如果类没有定义构造方法,则会自动包含一个只有self的构造方法 class Person: '这是一个Person类' def __init__(self,name='tom',age=10): print('创建一个Person类') self.name=name self.age=age def say(self,content): print(content) python一个类只有一个构造函数。不向java net 可以重载多个构造函数 2.创建对象 调用构造方法创建类的对象,不需要使用new关键字 p=Person()#打印创建一个Person类 调用 p.name p.say('你好') 赋值 p.name='lilei' 3.动态操作对象 动态添加变量 p.skills=['Singing','Swimming'] 动态删除变量 del p.name 动态创建方法 动态创建方法是,不会自动绑定到第一个参数,所以调用方法时,需要手动绑定 def hi(self): print("say hello") p.hello=hi p.hello(p)

python-面向对象之继承

喜夏-厌秋 提交于 2019-12-27 17:56:12
继承 什么是继承 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为 基类 或 超类 ,新建的类称为 派生类 或 子类 python中类的继承分为:单继承和多继承 class ParentClass1: #定义父类 pass class ParentClass2: #定义父类 pass class SubClass1(ParentClass1): #单继承,基类是ParentClass1,派生类是SubClass pass class SubClass2(ParentClass1,ParentClass2): #python支持多继承,用逗号分隔开多个继承的类 pass 提示:如果没有指定基类,python的类会默认继承object类,object是所有python类的基类,它提供了一些常见方法(如 __str__ )的实现 >>> ParentClass1.__bases__ (<class 'object'>,) >>> ParentClass2.__bases__ (<class 'object'>,) 抽象与继承(先抽象再继承) 抽象即抽取类似或者说比较像的部分。 抽象分成两个层次: 将奥巴马和梅西这俩对象比较像的部分抽取成类; 将人,猪,狗这三个类比较像的部分抽取成父类。 抽象最主要的作用是划分类别(可以隔离关注点,降低复杂度) 继承

Python 入门 之 类成员

▼魔方 西西 提交于 2019-12-27 17:50:30
1、类的私有成员: 私有: 只能自己拥有 以 __ 开头就是私有内容 对于每一个类的成员而言都有两种形式: - 公有成员,在任何地方都能访问 - 私有成员,只有在类的内部才能使用 私有成员和公有成员的访问限制不同: 静态字段(静态属性) - 公有静态字段:类可以访问;类内部可以访问;派生类中可以访问 - 私有静态字段:仅类内部可以访问; 推荐Python大牛在线分享技术 扣qun:855408893 领域:web开发,爬虫,数据分析,数据挖掘,人工智能 零基础到项目实战,7天学习上手做项目 class Human: live = "有思想" # 类公有的属性 __desires = "有欲望" # (程序级别)类私有的属性 _desires = "有欲望" # (程序员之间约定俗成)类私有的属性 def __init__(self,name,age,sex,hobby): self.name = name self.age = age self.sex = sex # 对象的公有属性 self.__hobby = hobby # 对象的私有属性 def func(self): # 类内部可以查看对象的私有属性 print(self.__hobby) def foo(self): # 公有方法 # 类内部可以查看类的私有属性 print(self.__desires) def _

Python 入门 之 面向对象的三大特性(封装 / 继承 / 多态)

僤鯓⒐⒋嵵緔 提交于 2019-12-27 17:49:17
1、面向对象的三大特性: (1)继承 ​ 继承是一种创建新类的方式,在Python中,新建的类可以继承一个或多个父类,父类又可以称为基类或超类,新建的类称为派生类或子类。 ​ 在Python中实现继承非常简单,在声明类的时候,在类名后面添加一个小括号,就可以完成继承关系。单纯的从代码的层面上来看当两个类具有相同的功能或者特征的时候就可以使用继承。提取一个父类,这个父类中编写者两个类相同的部分,然后两个类分别去继承这个类就可以了,这样写可以避免写很多重复的功能和代码。 ​ 继承的作用: ​ 减少代码的重用,提高代码可读性,规范编程模式 推荐Python大牛在线分享技术 扣qun:855408893 领域:web开发,爬虫,数据分析,数据挖掘,人工智能 零基础到项目实战,7天学习上手做项目 (2)封装:将一些代码或数据存储到某个空间中 ​ 封装:隐藏对象的属性和实现细节,仅对外提供公共的访问方式 ​ 好处: 将变化隔离;便于使用;提高复用性;提高安全性; ​ 封装原则: ​ 将不需要对外提供的内容都隐藏起来。 ​ 把属性都隐藏,提供公共方法对其访问。 ​ 封装使用: ​ 第一步: 将内容封装到某处 ​ 第二步: 从某处调用被封装的内容 ​ 通过对象直接调用 ​ 通过self间接调用 ​ 综上所述:对于面向对象的封装来说,其实就是使用构造方法将内容封装到对象中

Python 入门 之 类的约束以及super()剖析

怎甘沉沦 提交于 2019-12-27 17:48:31
1、类的约束 第一版: class WechatPay: def pay(self): print("微信支付") class AliPay: def pay(self): print("支付宝支付") class QQpay: def fuqian(self): print("QQ支付") wei = WechatPay() ali = AliPay() qq = QQpay() wei.pay() ali.pay() qq.fuqian() # 当统一接口时 def pay(object): object().pay() # QQ支付无法实现归一化 推荐Python大牛在线分享技术 扣qun:855408893 领域:web开发,爬虫,数据分析,数据挖掘,人工智能 零基础到项目实战,7天学习上手做项目 第二版: class PayClass: def pay(self): pass class WechatPay(PayClass): def pay(self): print("微信支付") class AliPay(PayClass): def pay(self): print("支付宝支付") class QQpay(PayClass): def fuqian(self): print("QQ支付") def pay(object): object().pay() pay