python继承

python 2 类与对象

▼魔方 西西 提交于 2020-03-09 04:18:06
1、类与对象的概念 类即类别、种类,是面向对象设计最重要的概念,从一小节我们得知对象是特征与技能的结合体,而类则是一系列对象相似的特征与技能的结合体。 那么问题来了,先有的一个个具体存在的对象(比如一个具体存在的人),还是先有的人类这个概念,这个问题需要分两种情况去看 (1)在现实世界中:肯定是先有对象,再有类 世界上肯定是先出现各种各样的实际存在的物体,然后随着人类文明的发展,人类站在不同的角度总结出了不同的种类,比如 人类、动物类、植物类等概念。也就说,对象是具体的存在,而类仅仅只是一个概念,并不真实存在,比如你无法告诉我人类 具体指的是哪一个人。 (2)在程序中:务必保证先定义类,后产生对象 这与函数的使用是类似的:先定义函数,后调用函数,类也是一样的 :在程序中需要先定义类,后调用类 。不一样的是:调用 函数会执行函数体代码返回的是函数体执行的结果,而 调用类会产生对象,返回的是对象 1>把一类事物的静态属性和动态可以执行的操作组合在一起所得到的这个概念就是类 2>类的一个个体就是对象,对象是具体的,实实在在的事物 3>对象是特征与技能的结合体,其中特征和技能分别对应对象的数据属性和方法属性 4>对象(实例)本身只有数据属性,但是python的class机制会将类的函数绑定到对象上,称为对象的方法,或者叫绑定方法,绑定方法唯一绑定一个对象,同一个类的方法绑定到不同的对象上

入门python如何成为重写大神

ε祈祈猫儿з 提交于 2020-03-09 03:15:41
类方法重写对于学好python非常重要,除了python基础,python的精髓在于继承,多态,封装和装饰器;下面是对于继承重写的一个简单示例: # 父类 class Student(): def __init__(self, name, age): self.name = name self.age = age def introduce(self): print('我的名字叫{},我今年{}岁了'.format(self.name, self.age)) # 子类 class NewStudent(Student): def __init__(self, name, age, sex): Student.__init__(self, name, age) self.sex = sex # 重写父类introduce方法,是父类中的introduce失效 def introduce(self): print('我的名字叫{},我今年{}岁了, 我是{}孩。'.format(self.name, self.age,self.sex)) s = NewStudent('小明', 18, '男') s.introduce() 来源: CSDN 作者: human_soul 链接: https://blog.csdn.net/human_soul/article/details

Python面向对象

与世无争的帅哥 提交于 2020-03-09 02:59:31
1.__init__的方法 2.属性查找 3.属性的调用 4.绑定关系 5.面向对象三大特性之一:继承与派生 知识点一:__init__方法应用 1.1__init__方法常规格式及操作 class OldboyStudent: school='odlboy' def __init__(self,name,age,sex): self.name=name self.age=age self.sex=sex stu1=OldboyStudent('杨智宗',27,'male') #stu1对象名称空间的内容 #查看对象名称空间的内容(查) print(stu1.name,stu1.age,stu1.sex) #杨智宗 27 male print(stu1.__dict__) #{'name': '杨智宗', 'age': 27, 'sex': 'male'} #对象名称空间增加内容(增) stu1.father='杨俊杰' # {'name': '杨智宗', 'age': 27, 'sex': 'male', 'father': '杨俊杰'} print(stu1.__dict__) #改对象名称空间的内容 (改) #{'name': '杨智宗', 'age': 27, 'sex': 'male', 'father': '杨俊杰'} stu1.age=66 print(stu1._

Python new方法与单例模式

左心房为你撑大大i 提交于 2020-03-09 00:53:19
在网上看了很多关于 __new__() 魔法方法的教程,毫无疑问大部分都是单例模式相关,确实如此,利用 __new__() 魔法方法的特性,在 Python 中很容易实现单例模式。 在面向对象编程的语言中,很多语言都有一个构造函数,例如 Java 和 C++ ,在 Python中 也存在一个构造函数 __init__() ,不过在 python 中叫做魔法方法,在类实例化的时候初始化类成员变量。运行下面的程序将会打印 init 字符串。 class test : def __init__ ( self ) : print ( 'init' ) if __name__ == '__main__' : a = test ( ) #程序输出 #init 刚开始学习 Python 的时候我觉得在类实例化的过程中第一运行的就是 __init__() 方法,后来发现还有一个比它先运行的魔法方法 __new__() 方法,运行下面的代码可以看到确实如此。 class test : def __init__ ( self ) : print ( 'init' ) def __new__ ( cls , * args , ** kwargs ) : print ( 'new' ) if __name__ == '__main__' : a = test ( ) #程序输出 #new 但是。。。

如何在Python中调用超级构造函数?

时光总嘲笑我的痴心妄想 提交于 2020-03-08 20:53:08
class A: def __init__(self): print("world") class B(A): def __init__(self): print("hello") B() # output: hello 在所有其他与super构造函数一起使用的语言中,都是隐式调用的。 如何在Python中调用它? 我期望 super(self) 但这不起作用。 #1楼 super() 在新样式类中 返回类似父对象的对象: class A(object): def __init__(self): print("world") class B(A): def __init__(self): print("hello") super(B, self).__init__() B() #2楼 使用Python 2.x旧式类将是这样: class A: def __init__(self): print "world" class B(A): def __init__(self): print "hello" A.__init__(self) #3楼 一种方法是调用A的构造函数并将 self 作为参数传递,如下所示: class B(A): def __init__(self): A.__init__(self) print "hello" 这种样式的优点是非常清晰。 它称为A的初始化程序。

python使用flask+Thread实现异步任务

假如想象 提交于 2020-03-08 19:32:21
# 定义一个WorkerController,用于执行业务代码 class WorkerController(object): def __init__(self): pass def do_something(self, params): print("do something") # 定义一个AsyncWorker,继承Thread,重写run方法,run方法中调用WorkerController的do_something方法 from threading import Thread from worker_controller import WorkerController WORKER_CONTROLLER = WorkerController() class AsyncWorker(Thread): ASYNC_WORKER_INFO = dict() def __init__(self, params, ticket_id): Thread.__init__(self) self.params = params self.ticket_id = ticket_id self.daemon = True self.start() def run(self): AsyncWorker.ASYNC_WORKER_INFO[self.ticket_id] = { #

python类的学习:前言

爱⌒轻易说出口 提交于 2020-03-08 17:58:15
前言 在面向对象程序设计中,把数据以及对数据的操作封装在一起,组成一个整体(对象),不同对象之间通过消息机制来通信或者同步。对于相同类型的对象进行分类、抽象后,得出共同的特征而形成了类。 创建类时用变量形式表示对象特征的成员称为数据成员,用函数形式表示对象行为的成员称为成员方法,数据成员与成员方法统称为类的成员。 以设计好的类为基类,可以继承得到派生类,缩短开发周期,实现代码的复用。 派生类中还可以对基类继承而来的某些行为进行重新实现,从而是得基类的某个同名方法在不同派生类中的行为不同,体现出一定的多态特性。 封装、继承、多态是面向对象程序设计的三个要素。 本章学习目标: 掌握类的定义语法 掌握对象的创建语法 理解数据成员与成员方法的区别 理解私有成员与公有成员的区别 理解属性的工作原理 了解继承的基本概念 了解特殊方法的概念与工作原理 来源: CSDN 作者: weixin_45700973 链接: https://blog.csdn.net/weixin_45700973/article/details/104729350

python学习笔记——面向对象

你说的曾经没有我的故事 提交于 2020-03-08 07:50:41
1.访问限制 练习1 class Student(object): def __init__(self, name, gender): self.__name = name self.__gender = gender def get_gender(self): return self.__gender print('%s' %self.__gender) def set_gender(self,gender): if gender == 'male' or gender == 'female': self.__gender = gender else: raise ValueError('Please set a correct gender!') bart = Student('Bart', 'male') print(bart.get_gender()) bart.set_gender('female') print(bart.get_gender()) ( 题外话 )python 里的与或非: 一般格式为:a & b a | b a and b a or b 如果a,b是数值变量, 则&, |表示位运算, and,or则依据是否非0来决定输出 例如: 1 & 2 # 输出为 0, 1 | 2 # 输出为3 (# 1&2,2在二进制里面是10,1在二进制中是01

DAY2-Python学习笔记

て烟熏妆下的殇ゞ 提交于 2020-03-08 03:36:35
1.迭代器: 可以直接作用于 for 循环的对象 统称 为 可迭代对象 : Iterable ,使用 isinstance() 判断一个对象是否是 Iterable 对象: >>> from collections import Iterable >>> isinstance([], Iterable) True >>> isinstance({}, Iterable) True >>> isinstance('abc', Iterable) True >>> isinstance((x for x in range(10)), Iterable) True >>> isinstance(100, Iterable) False 可以被 next() 函数调用并 不断返回 下一个值的对象称为 迭代器 : Iterator ,使用 isinstance() 判断一个对象是否是 Iterator 对象: >>> from collections import Iterator >>> isinstance((x for x in range(10)), Iterator) True >>> isinstance([], Iterator) False >>> isinstance({}, Iterator) False >>> isinstance('abc', Iterator)

元类metaclass

依然范特西╮ 提交于 2020-03-08 03:09:52
一 前言 二 什么是元类 三 class关键字创建类的流程分析 五 自定义元类控制类OldboyTeacher的创建 六 自定义元类控制类OldboyTeacher的调用 六 再看属性查找 七 练习题 一 前言 元类属于python面向对象编程的深层魔法,99%的人都不得要领,一些自以为搞明白元类的人其实也只是自圆其说、点到为止,从对元类的控制上来看就破绽百出、逻辑混乱,今天我就来带大家来深度了解python元类的来龙去脉。 笔者深入浅出的背后是对技术一日复一日的执念,希望可以大家可以尊重原创,为大家能因此文而解开对元类所有的疑惑而感到开心!!! 二 什么是元类 一切源自于一句话:python中一切皆为对象。让我们先定义一个类,然后逐步分析 class OldboyTeacher(object): school='oldboy' def __init__(self,name,age): self.name=name self.age=age def say(self): print('%s says welcome to the oldboy to learn Python' %self.name) 所有的对象都是实例化或者说调用类而得到的(调用类的过程称为类的实例化),比如对象t1是调用类OldboyTeacher得到的 t1=OldboyTeacher('egon',18)