python继承

day6

落花浮王杯 提交于 2019-11-29 21:10:39
阅读目录 楔子 面向过程vs面向对象 初识面向对象   类的相关知识   对象的相关知识   对象之间的交互   类命名空间与对象、实例的命名空间   类的组合用法   初识面向对象小结 面向对象的三大特性   继承   多态   封装 面向对象的更多说明   面向对象的软件开发   几个概念的说明   面向对象常用术语 回到顶部 楔子 你现在是一家游戏公司的开发人员,现在需要你开发一款叫做<人狗大战>的游戏,你就思考呀,人狗作战,那至少需要2个角色,一个是人, 一个是狗,且人和狗都有不同的技能,比如人拿棍打狗, 狗可以咬人,怎么描述这种不同的角色和他们的功能呢? 你搜罗了自己掌握的所有技能,写出了下面的代码来描述这两个角色 def person(name,age,sex,job): data = { 'name':name, 'age':age, 'sex':sex, 'job':job } return data def dog(name,dog_type): data = { 'name':name, 'type':dog_type } return data 人和狗的角色定制1 上面两个方法相当于造了两个模子,游戏里的每个人和每条狗都拥有相同里的属性。游戏开始,你根据一个人或一只狗传入的具体信息来塑造一个具体的人或者狗,怎么生成呢? d1 = dog("李磊","京巴")

Python 之 面向对象

喜欢而已 提交于 2019-11-29 19:36:41
Python 之 面向对象 类、对象定义及使用 属性和方法 属性 方法 构造方法 封装 继承 多态 本篇文章重点讲解Python的面向对象,包括Python中如何定义类、对象、封装、继承、多态等 类、对象定义及使用 定义类: 语法 class 类名(父类): 代码块 注意:()可有可无 eg: class Person: #这是一个类 创建对象(实例): 语法 对象名=类名() 注意:Java语言在实例化对象是,采用new关键字,而Python语言不需要。 eg: person=Person() isinstance()语法 isinstance()是检测一个对象是否是一个类的实例 语法格式: isinstance(对象,类),结果返回True和False eg: isinstance(person,Person),结果为True 属性和方法 属性 属性:分为类属性和对象属性 属性修饰符:私有属性、公共属性 类属性 class Person: name="张三" #name是类属性 对象属性 p1=Person() p1.name="张三" #name是对象属性 类属性和对象属性的区别? 类属性直接通过类名就可以调用,比如: Person.name 对象属性必须通过对象名调用,比如: person.name 公共属性 没有任何修饰符,该类型的属性可以被任意一个对象所调用 比如:

第一阶段:Python开发基础 day29 面向对象之元类以及元类延伸的相关知识

社会主义新天地 提交于 2019-11-29 19:18:58
目录 上节课内容回顾 一、元类是什么 二、class底层原理分析 三、通过元类来控制类的产生 四、通过元类控制类的调用过程 五、有了元类之后的属性查找 上节课内容回顾 # 面试题:这俩有什么区别 # sorted() # l=[1,3] # l.sort() # # len() # l.__len__() # 反射 # setattr() #向对象中设置属性或方法 # getattr() #获取对象中的属性或方法 # delattr() #删除对象中的属性或方法 # hasattr() #判断对象中是否有该属性或方法(属性或方法用字符串表示# ) # import os # hasattr(os,'path') # p=getattr(os,'path1',None) # print(p) # setattr(对象,key,value) # delattr() #内置方法(魔法方法) # __str__ print 打印的时候,会自动触发该函数的执行 #点拦截方法 对象加 . 就会触发 # __setattr__ : 对象加.赋值或修改值会触发 #__getattr__ : 对象加.获取值,如果取不到,会触发 #__delattr__ :对象加. 删除值,会触发 # dic=dict(name='lqz',age=18) # dic.name # dic['name'] #

第一阶段:Python开发基础 day28 面向对象之反射与内置方法

喜夏-厌秋 提交于 2019-11-29 19:18:29
目录 一、断点调试 二、issubclass和ininstance方法 三、反射 四、内置方法 总结 一、断点调试 # 一定公民:只要可以吧一个东西赋值给一个变量,这个东西就叫一等公民 #在想要加断点的地方用鼠标点击一下,你会看到一个红色圆圈 #变红的地方,程序执行到,就会暂停 #断电应该加载报错之前 #绿色箭头表示快速跳到下一个断点执行 #控制台报错,点击你能看懂的最后一行,光标会快速定位到错误代码,在错误代码上放,加断电,断点调试 def test5(): return 'lqz' def test3(): print('3333') def test(): def test2(): test3() i=900 i=test5() if i>100: print('大于100') # print(i) print(i) return test2 print('xxxx') print('第一句话') #这个函数内部出错 test()() print('4444') 二、issubclass和ininstance方法 #判断第一个类是不是第二个类的子类,返回true或者false # issubclass() # class Foo: # pass # class Bar(Foo): # pass # # class Tt(Bar): # pass # print(Bar._

python笔记二

和自甴很熟 提交于 2019-11-29 19:16:02
# 类可以起到模板的作用,因此,可以在创建实例的时候,把一些我们认为必须绑定的属性强制填写进去。 # 通过定义一个特殊的__init__方法,在创建实例的时候,就把属性绑上去 class Student(object): # 和普通的函数相比,在类中定义的函数只有一点不同,就是第一个参数永远是实例变量self # Python解释器自己会把实例变量传进去 def __init__(self, attr1, attr2): self.attr1 = attr1 self.attr2 = attr2 pass def get_attr(self): print(self.attr1) s = Student(111,222) s.get_attr() # 如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线__, # 在Python中,实例的变量名如果以__开头,就变成了一个私有变量(private),只有内部可以访问,外部不能访问 class Student(object): def __init__(self, attr1, attr2): self.attr1 = attr1 self.__attr2 = attr2 pass s = Student(111,222) print(s.attr1) print(s.__attr2) #继承和多态

1、python之魔法函数

谁说我不能喝 提交于 2019-11-29 19:13:11
python中常见的内置类型 什么是魔法函数? python的魔法函数总被双下划线包围,它们可以给你的类增加特殊的方法。如果你的对象实现了这些方法中的一个,那么这个方法就会在特殊情况下被调用,你可以定义想要 的行为,而这一切都是自动发生的。 魔法函数一览 魔法函数举例 1.1. getitem 把对象变成可迭代的对象 例子: class Company(object): def __init__(self,employee_list): self.employee = employee_list #魔法函数,给类加可迭代类型 def __getitem__(self, item): return self.employee[item] company = Company(['11','22','33']) #加了魔法函数“__getitem__”,类就成了可迭代的了 for em in company: print(em) #11,22,33 如果不用魔法函数循环出每个员工的方法 class Company(object): def __init__(self,employee_list): self.employee = employee_list company = Company(['11','22','33']) for em in company.employee:

Python内置的一个用于命令项选项与参数解析的模块argparse

橙三吉。 提交于 2019-11-29 19:08:09
一、argparse简单使用 我们先来看一个简单示例。主要有三个步骤: 创建 ArgumentParser() 对象 调用 add_argument() 方法添加参数 使用 parse_args() 解析添加的参数 示例: import argparse parser = argparse.ArgumentParser() parser.add_argument('integer', type=int, help='display an integer') args = parser.parse_args() print(args.integer) 将上面的代码保存为文件 argparse_usage.py ,在终端运行,结果如下: λ python argparse_usage.py usage: argparse_usage.py [-h] integer argparse_usage.py: error: the following arguments are required: integer λ python argparse_usage.py abcd usage: argparse_usage.py [-h] integer argparse_usage.py: error: argument integer: invalid int value: 'abcd' λ

Python 笔记:07 子类

旧城冷巷雨未停 提交于 2019-11-29 17:11:45
子类: 一、定义:   是相对于父类而言的,B类从A类,继承了A类中的属性和方法,则A类是父类,B类是子类 二、固定格式:   class 子类名(父类名):   #初始化子类属性   def __init__(self,父类变量1,父类变量2):    #初始化父类的属性     super( ).__init__(父类属性1,父类属性2)或父类名.__init__(父类属性1,父类属性2)     self.子类新变量名=值   def 子类新方法:     ...... 三、实例化相同 四、例:   class Taide_dog(Dog)   def __inint__ (self,name,age)   super().__init__(name,age)或 Dog.__init__(name,age)   self.weight=15   def run(self)’   print('This Dog weight : ' + str(self.weight)+ ' It needs to run!‘) 来源: https://www.cnblogs.com/wssking/p/11523418.html

wxPython:python首选的GUI库

家住魔仙堡 提交于 2019-11-29 16:29:22
wxPython:python首选的GUI库 文章目录 wxPython:python首选的GUI库 概述 窗口程序的基本框架 事件和事件驱动 菜单栏/工具栏/状态栏 动态布局 AUI布局 DC绘图 定时器和线程 后记 概述 跨平台的GUI工具库,较为有名的当属GTK+、Qt 和 wxWidgets 了。GTK+是C实现的,由于C语言本身不支持OOP,因而GTK+上手相当困难,写起来也较为复杂艰涩。Qt 和 wxWidgets 则是C++实现的,各自拥有庞大的用户群体。虽然我喜欢wxWidgets,但还是尽可能客观地搜集了关于Qt 和 wxWidgets 的对比评价。 关于LICENSE Qt最初由芬兰的TrollTech公司研发,后来卖给了Nokia(没看错,就是曾经闻名遐迩的手机巨头诺基亚),2012年Digia从诺基亚完整收购了QT的技术平台和知识产权。QT的背后一直由商业公司支持,奉行的是双 license 策略,一个是商业版,一个是免费版。这个策略严重限制了Qt的用户群体。据说Nokia收购之后意识到了这个问题,自4.5版本之后采用了LGPL,开发人员可以发布基于免费Qt库的商业软件了。wxWidgets最开始是由爱丁堡(Edinburgh)大学的人工智能应用学院开发的,在1992年开源,一直遵循LGPL。wxWidgets从一开始就是程序员的免费午餐。 关于兼容性

python--面向对象

假如想象 提交于 2019-11-29 16:17:42
python:面向对象的基本知识点 面向对象: #类是现实世界或思维世界的实体在计算机中的反映 #它将数据以及这些数据上的操作封装在一起 # 属性-特征 # 方法(函数)-行为 # 构造函数-__init__() 初始化类的特征 构造函数是自动被调用的,也可显式调用,但不能定义return值,只能返回None(一般不用) 作用:初始化类的特征值,让对象之间变的不同 1 类命名 # 首字母大写;单词之间大写连接   2 构造函数(特殊的实例方法) # 2.1 默认被调用;亦可被主动调用 # 2.2 只能返回None,它不是用来返回值的 # 2.3 作用:让模板创建不同的对象,初始化对象的特性 3 属性 # 类变量(用'='号赋值!!!) :Students.sum #规范:通过方法修改类变量 # self.__class__.变量 访问类变量 # 实例变量 # self.变量 定义实例变量 # __dict__ 内置函数(同__all__,定义import*的范围):对象下所有变量的字典 # dict需在实例中调用,在类中不准确。 4 方法 # 4.1 实例方法 # self 显胜于隐 相当于this,只和实例对象有关,和类无关 #访问实例变量,要加self # 访问类变量 __class__ 指定的类 Student # 不要操作与对象无关的变量,请用类方法 # 4.2 类方法