python-day6面向对象、类的继承
@面向对象三大特性:封装encapsulation、继承inheritance、多态(一个接口,多个实现)polymorphism。
@面向对象介绍http://www.cnblogs.com/alex3714/articles/5188179.html
@编程原则需要考虑:重复代码比较第一,写的代码会经常需要变更。
@如果只是字典搭配函数进行程序设计,会出现绕过控制函数直接更改字典值的漏洞。
@驼峰式命名:ElecticCar
@类的实例化:
r1 = Role('Alex','police','AK47’) #生成一个角色
d.sayhi()#执行函数、方法、功能、动态属性。
以下为解释
r1=Role(r1, 'Alex','police','AK47’)
r1=Role.__init__()à return x2314512o213sxo..
@self.name=name#实例变量(静态属性)。
@__init__()上面再加变量就是类变量,可以通过类和实例进行调用。
@执行时先找实例变量,如果没有就继续找类变量。
@实例化后可以增加属性,如:r1.bb=100;也可以删除属性 del r1.name
@修改属性的值:先实例化后直接给属性赋值;增加函数方法,函数内容是给默认属性赋新值。
@类变量的更改?
@类变量的用途:省内存。
@@@析构函数:在实例释放、销毁的时候执行的,通常做一些收尾工作,比如做一些关闭数据连接、
@创建def __init__(self):
程序退出时,执行;del 实例时执行。
@python自动回收机制,实质就是如果没有变量名,就清理掉。
@ self.name改成self.__name,就成了私有属性。
在实例中无法直接调取,可以再建一个函数,用来调取私有属性,再通过调取函数来调取私有属性。
@5-10、11讲的xml看没看?
@继承
@class man(Farther):
def __init__(self,name,age,自己的属性)
Farther.__init__(self,name,age)
m1=man(xxx,xxx)
调用父类属性,函数里通过Farther.函数
可以用super(man,self).__init__(父类属性),就是可以随时调用父类的属性。
@继承(《入门到实践》)
class Car():
pass
class ElecticCar(Car):
def __init__(self,make,model,year):#导入父类的属性
super().__init__(make,model,year)#想继承的属性
self.size=70#新建属性
def gas():#父类有的函数,我想有但是不一样,直接重新创建函数
pass
@新式类
class people(object):#object叫基类
新旧类的区别,主要体现在多继承的顺序问题,只继承第一个父类的__init__,这个策略叫广度优先。Python3全是广度优先,python2里面经典类是深度优先,新式类是广度优先。
A |
↖ |
|
B |
→ |
C |
↖ |
D |
@多继承
继承.py里面的man继承people和relation!!!
执行顺序从左到右
@http://www.cnblogs.com/alex3714/articles/5188179.html继承示例
@@@多态
一种接口,多种形态。作用:重复利用接口调用。http://www.cnblogs.com/alex3714/articles/5188179.html
@多态实例(python默认没有多态功能,通过这种形式可实现)
class Animal:
def __init__(self, name): # Constructor of the class
self.name = name
def talk(self): # Abstract method, defined by convention only
pass #raise NotImplementedError("Subclass must implement abstract method")
@staticmethod#静态方法,跟类没关系,名义上是类的函数(没用过)
def animal_talk(obj):
obj.talk()
class Cat(Animal):
def talk(self):
print('Meow!')
class Dog(Animal):
def talk(self):
print('Woof! Woof!')
d = Dog("陈荣华")
c = Cat("徐良伟")
Animal.animal_talk(c)
Animal.animal_talk(d)
python-day6面向对象、类的继承的更多相关文章
- Python之面向对象类和对象
Python之面向对象类和对象 定义一个类:class 定义类的语法: class Test(object): """ 类里定义一类事物共同的技能. 可以是变量,也可是函 ...
- 关于Python中的类普通继承与super函数继承
关于Python中的类普通继承与super函数继承 1.super只能用于新式类 2.多重继承super可以保公共父类仅被执行一次 一.首先看下普通继承的写法 二.再看看super继承的写法 参考链接 ...
- python 之 面向对象基础(继承与派生,经典类与新式类)
7.2 继承与派生 7.21继承 1.什么是继承? 继承是一种新建类的的方式,在python中支持一个子类继承多个父类.新建的类称为子类或者派生类,父类又可以称为基类或者超类,子类会”遗传“父类的属性 ...
- python中的类与继承
Class 类的定义以及实例的建立 Python中,类通过 class 关键字定义. 例如最简单的一个类定义可以为: class Person(object): pass Python 的编程习惯,类 ...
- python(面向对象-类封装调用)
一.面对对象思想 (1)大家肯定听过 Python 中”一切皆对象“的说法,但可能并不了解它的具体含义,只是在学习的时候听说 Python 是面向对象的编程语言,本节将向大家详细介绍 Python 面 ...
- Lua面向对象----类、继承、多继承、单例的实现
(本文转载)学习之用,侵权立删! 原文地址 http://blog.csdn.net/y_23k_bug/article/details/19965877?utm_source=tuicool&a ...
- python之7-2类的继承与多态
类的继承的意思就如同父子关系一样,这个儿子继承了父亲的一切,但是在某些地方(属性)相同的时候,儿子的属性大于老子的属性(覆盖),最底层类,总会继承最接近它的那个类的属性init 类的多态总是和继承相连 ...
- python程序设计——面向对象程序设计:继承
继承是为代码复用和设计复用而设计的 在继承关系中,已有的.设计好的类称为父类或基类,新设计的类为子类或派生类 派生类可以继承父类的公有成员,但不能继承其私有成员 如果需要在派生类中调用基类的方法,可以 ...
- Python(面向对象编程——2 继承、派生、组合、抽象类)
继承与派生 ''' 继承:属于 组合:包含 一. 在OOP程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称 ...
- Python3 面向对象-类的继承与派生
1.什么是继承? 继承是一种创建新类的方式,新建的类可以继承一个或多个父类(python支持多继承),父类可称为基类或超类,新建的类称为派生类和或子类. 子类会遗传父类的属性,从而解决代码重用问题. ...
随机推荐
- java-IO流-其他流
###22.01_IO流(序列流)(了解) * 1.什么是序列流 * 序列流可以把多个字节输入流整合成一个, 从序列流中读取数据时, 将从被整合的第一个流开始读, 读完一个之后继续读第二个, ...
- 2018-2019-2 20165313 《网络对抗技术》Exp4 恶意代码分析
一.实践目标 1.监控你自己系统的运行状态,看有没有可疑的程序在运行. 2.分析一个恶意软件,就分析Exp2或Exp3中生成后门软件:分析工具尽量使用原生指令或sysinternals,systrac ...
- asp.net 按钮执行前后台方法——前台弹出提示信息,确认后继续执行后台方法,取消则不执行后台方法
我们做一个测试的web页面,只需要一个button+一个label就ok啦,通过button按钮的后台事件修改label的text属性值来测试是否执行了后台事件里的代码 前台 写一个js方法: < ...
- vim-go 安装
vim-go 安装 https://studygolang.com/articles/3229
- test png
$x^2 \int $ When $a \ne 0$, there are two solutions to (ax^2 + bx + c = 0) and they are $$x = {-b \p ...
- 第六节《Git克隆》
本节学习如何使用git clone命令建立版本库克隆,以及如何使用git push和gitpull命令实现克隆之间的同步. Git的版本库目录和工作区在一起,因此存在一损俱损的问题,即如果删除一个项目 ...
- MySQL Transaction--查看未提交事务执行的SQL
未提交事务 长期未提交事务,指开启事务后,长时间未向MySQL发出SQL执行请求或事务处理(COMMIT/ROLLBACK)请求,在系统表`information_schema`.`INNODB_TR ...
- orientdb docker-compose 运行
orientdb 很早就跑过,但是现在在跑,发现配置有些变动,原有studio 直接就可以访问的,新版本的居然还需要自己添加 server 的配置,所以为了方便使用docker-compose 运行, ...
- 学习Xposed --记WX功能分析的过程
首先,这个不是写个新手看的,内容比较粗略,把几个关键点自己列一下,以做记录 首先,我对andriod不懂,对java本身也不是非常熟,也从来没写过andriod或java的程序,但本着曾经对编程的理解 ...
- js 获取url中的参数 修改url 参数 移除url参数
js 获取url中的参数 修改url 参数 移除url参数 var jsUrlHelper = { getUrlParam : function(url, ref) { var str = " ...