在面向对象,继承是一个很重要的特性
子类与父类,子类是对父类的一种扩展,在父类的属性和方法上进行一些扩展
示例:没带继承
 
#定义一个带编号和状态的门的类
class Door(object):
def __init__(self,num,status):
self.num = num
self.status = status
def open(self):
self.status = 'open'
def close(self):
self.status = 'close'
 
#定义一个可以锁的门的类
class Lockable(object):
def __init__(self,num,status,locked):
self.num = num
self.status = status
self.locked = locked
def open(self):
if not self.locked: #如果没有锁的话,那么我就打开它
self.status = 'open'
else:
print "the door is locked"
def close(self):
self.status = 'close'
======================================================================
======================================================================
======================================================================
上例中我们发现Lockable这个类就是在Door类的基础上增加了一个locked实例变量
和有没有锁的方法,其他地方都是一样的。
#继承
class Door(object):
def __init__(self,num,status):
self.num = num
self.status = status
def open(self):
self.status = 'open'
def close(self):
self.status = 'close'
 
#继承自父类Door
class Lockable(Door):
def __init__(self,num,status,locked):
super(Lockable,self).__init__(num,status) #这里super说明了你构造函数继承了你的父类的num和status两个实例变量,里面的写法是固定的(子类名,self)
self.locked = locked #这里因为你继承了父类,所以我们这里就不用再self.num和self.status给它们赋值,locked是新增的,需要对其赋值
#对open方法进行重载
def open(self):
if not self.locked: #如果没有锁的话,那么我就打开它
#调用父类的方法
super(Lockable,self).open()
else:
print "the door is locked"
 
 
class Unlockable(Door): #这里我定义了一个没有锁的门,并且我什么都不做,它继承了父类Door,即使他什么都不做,Door的方法它也都继承下来了
pass
 
 
u = Unlockable(1,'open')
print (u.status)
 
l = Lockable(1,'open',True)
l.open()
print (l.status)
 
l = Lockable(1,'open',False)
l.open()
print (l.status)
 
 
 
===========================================================================
===========================================================================
===========================================================================
静态方法:
 
@static_method #静态方法,类的工具包
def info() #不用加self,无需实例化,不能访问实例其他信息
 
 
@class_method #类方法,
def info(self): #能访问类变量,不能访问实例变量,不需要实例化,即可调用
 
 
@property #将函数变成静态属性,需实例化方可调用,如果不实例化则仅仅是打印内存地址,调用的时候不需要加()
def sayhi(self): #
print "-----say hi",self.name
return "test"
 
 
m = MyClass()
print (m.sayhi) #会打印出-----say hi
 
如果是这样:
print (MyClass.sayhi) #则仅仅只会打印出<property object at 0x0200F8A0>
 
如果是这样:
print (MyClass.sayhi()) #则会报错
 
 
 
=========================================================================
=========================================================================
=========================================================================
什么情况需要实例化才能调用,什么情况不需要实例化也能调用:
总结:
你只要看到有self的就代表需要实例化才能调用(仅仅在没有那三个特殊方法的情况下)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

十七、Python面向对象之继承的更多相关文章

  1. Python 面向对象编程 继承 和多态

    Python 面向对象编程 继承 和多态 一:多继承性 对于java我们熟悉的是一个类只能继承一个父类:但是对于C++ 一个子类可以有多个父亲,同样对于 Python一个类也可以有多个父亲 格式: c ...

  2. Python面向对象编程——继承与派生

    Python面向对象编程--继承与派生 一.初始继承 1.什么是继承 继承指的是类与类之间的关系,是一种什么"是"什么的关系,继承的功能之一就是用来解决代码重用问题. 继承是一种创 ...

  3. Python面向对象03 /继承

    Python面向对象03 /继承 目录 Python面向对象03 /继承 1. 初识继承 2. 单继承 3. 多继承 4. 总结 1. 初识继承 概念:专业角度:如果B类继承A类,B类就称为子类,派生 ...

  4. python面向对象(封装,继承,多态)

    python面向对象(封装,继承,多态) 学习完本篇,你将会深入掌握 如何封装一个优雅的借口 python是如何实现继承 python的多态 封装 含义: 1.把对象的属性和方法结合成一个独立的单位, ...

  5. python面向对象编程 继承 组合 接口和抽象类

    1.类是用来描述某一类的事物,类的对象就是这一类事物中的一个个体.是事物就要有属性,属性分为 1:数据属性:就是变量 2:函数属性:就是函数,在面向对象里通常称为方法 注意:类和对象均用点来访问自己的 ...

  6. python面向对象的继承-组合-02

    *面向对象(OOP)的三大特征:**# 封装.继承.多态 继承 什么是继承 继承:# 是一种关系,描述两个对象之间什么是什么的什么的关系 例如:麦兜.佩奇.猪猪侠.猪刚鬣,都是猪 为什么要使用继承 继 ...

  7. python 面向对象之继承与派生

    一:初识继承 1,什么是继承? 继承指的是类与类之间的关系,是一种什么"是"什么的关系,继承的功能之一就是用来解决代码重用问题 继承是一种创建新类的方式,在python中,新建的类 ...

  8. python面向对象之继承/多态/封装

    老师说,按继承/多态/封装这个顺序来讲. 子类使用父类的方法: #!/usr/bin/env python # coding:utf-8 class Vehicle: def __init__(sel ...

  9. python面向对象之继承与派生

    一.继承 继承是一种创建新的类的方式,在python中,新建的类可以继承自一个或者多个父类,原始类称为基类或超类,新建的类称为派生类或子类. python中类的继承分为:单继承和多继承,如果是多继承的 ...

随机推荐

  1. Kettle Unable to get list of element types for namespace 'pentaho'

    我把公司的kettle5.0升级到7.0之后遇到了这个问题,困扰了很久,百度谷歌都查不到结果,所以只能自己查找原因. 由于已经被搞好了,现在无法截图了,总之就是下面这行报错,遇到这个错误的同学估计也不 ...

  2. 【ECNU3386】Hunter's Apprentice(多边形有向面积)

    点此看题面 大致题意: 按顺序给你一个多边形的全部顶点,让你判断是按顺时针还是逆时针给出的. 多边形有向面积 显然我们知道,叉积可以求出两个向量之间有向面积的两倍. 所以,我们三角剖分,就可以求出四边 ...

  3. MACbook关机开机的咚咚咚声音

    在MAC系统中,设置→声音设置→内置扬声器静音即可. windows下面没有试过.

  4. ORA-01722 invalid number 一个比较隐蔽的可能错误原因

    在Oracle数据库中,数据类型为char或者varchar的字段,里面存储的数据,可以是纯数字串,比如:  3433,也可以是带有英文字符的字符串,比如:  3433a. Oracle对于纯数字串, ...

  5. [报名中] 腾讯技术专家为你揭秘"音视频及融合通信技术"

    | 导语 6月29日,北京东直门亚朵S酒店,云+社区邀您参加<音视频及融合通信技术>沙龙活动,深度探讨音视频及融合通信技术的发展及实践,领略前沿,共创价值. 数字多媒体技术的不断发展对音视 ...

  6. c# 多线程解决死锁问题

    可使用:Monitor.TryEnter()方法.虽然这种方法可以解决死锁问题,但是最好还是不要出现死锁这种情况.如果出现死锁这种情况,就说明代码有问题啊.还是在else里面加个日志记录下吧,然后再解 ...

  7. Loj #2570. 「ZJOI2017」线段树

    Loj #2570. 「ZJOI2017」线段树 题目描述 线段树是九条可怜很喜欢的一个数据结构,它拥有着简单的结构.优秀的复杂度与强大的功能,因此可怜曾经花了很长时间研究线段树的一些性质. 最近可怜 ...

  8. jdk源码调试进去形参没有值

    https://blog.csdn.net/u010407050/article/details/76690478 1.在你的D:盘新建jdk文件夹,然后在文件夹里面分别创建两个文件夹jdk_src( ...

  9. Salesforce学习之路(二)Profile

    如上篇文章所述,针对User来讲,最重要的概念便是Profile和Role,因为Profile于Security息息相关,这是一个合格的产品中十分重要的一环. 何为Profile? 前文所讲--就是一 ...

  10. web应急:新闻源网站劫持

    新闻源网站一般权重较高,收录快,能够被搜索引擎优先收录,是黑灰产推广引流的必争之地,很容易成为被攻击的对象.被黑以后主要挂的不良信息内容主要是博彩六合彩等赌博类内容,新闻源网站程序无论是自主开发的还是 ...