python类继承用法实例分析


Posted in Python onMay 27, 2015

本文实例讲述了python类继承用法。分享给大家供大家参考。具体如下:

help('object') # test
class Class1(object):
  """
  Class1 inherits the most basic container class object (just a place holder)
  this is the newer class writing convention, adding (object) is "still" optional
  """
  k = 7
  def __init__(self, color='green'):
    """
    Special method __init__() is called first (acts as Constructor).
    It brings in data from outside the class like the variable color.
    (in this case color is also set to a default value of green)
    The first parameter of any method/function in the class is always self,
    the name self is used by convention. Assigning color to self.color allows it
    to be passed to all methods within the class. Think of self as a carrier,
    or if you want impress folks call it target instance object.
    The variable k is assigned a value in the class, but outside of the methods.
    You can access k in a method using self.k
    """
    self.color = color
  def Hello1(self):
    print "Hello from Class1!"
  def printColor(self):
    """in this case self allows color to be passed"""
    print "I like the color", self.color
  def __localHello(self):
    """
    A variable or function with a double underline prefix and no or max. single
    underline postfix is considered private to the class and is not inherited or
    accessible outside the class.
    """
    print "A hardy Hello only used within the class!"
 
class Class2(Class1):
  """
  Class2 inherits Class1 (Class2 is the subclass, Class1 the base or superclass)
  Class1 has to be coded before Class2 for this to work!!!
  Class2 can now use any method of Class1, and even the variable k
  """
  def Hello2(self):
    print "Hello from Class2!"
    print self.k, "is my favorite number"
   
# the color blue is passed to __init__()
c1 = Class1('blue')
# Class2 inherited method __init__() from Class1
# if you used c2 = Class2(), the default color green would be picked
c2 = Class2('red')
print '-'*20
print "Class1 says hello:"
c1.Hello1()
print '-'*20
print "Class2 says a Class1 hello:"
c2.Hello1()
print '-'*20
print "Class2 says its own hello:"
c2.Hello2()
print '-'*20
print "Class1 color via __init__():"
c1.printColor()
print '-'*20
print "Class2 color via inherited __init__() and printColor():"
c2.printColor()
print '-'*20
print "Class1 changes its mind about the color:"
c1 = Class1('yellow') # same as: c1.__init__('yellow')
c1.printColor()
print '-'*20
print "Wonder what Class2 has to say now:"
c2.printColor()
print '-'*20
# this would give an error! Class1 does not have a method Hello2()
if hasattr(Class1, "Hello2"):
  print c1.Hello2()
else:
  print "Class1 does not contain method Hello2()"
# check inheritance
if issubclass(Class2, Class1):
  print "Class2 is a subclass of Class1, or Class2 has inherited Class1"
# you can access variable k contained in Class1
print "Variable k from Class1 =", c1.k
print '-'*20
# this would give an error! You cannot access a class private method
if hasattr(Class1, "__localHello()"):
  print c1.__localHello()
else:
  print "No access to Class1 private method __localHello()"

运行结果如下:

Help on class object in module __builtin__:

class object
 | The most base type

--------------------
Class1 says hello:
Hello from Class1!
--------------------
Class2 says a Class1 hello:
Hello from Class1!
--------------------
Class2 says its own hello:
Hello from Class2!
7 is my favorite number
--------------------
Class1 color via __init__():
I like the color blue
--------------------
Class2 color via inherited __init__() and printColor():
I like the color red
--------------------
Class1 changes its mind about the color:
I like the color yellow
--------------------
Wonder what Class2 has to say now:
I like the color red
--------------------
Class1 does not contain method Hello2()
Class2 is a subclass of Class1, or Class2 has inherited Class1
Variable k from Class1 = 7
--------------------
No access to Class1 private method __localHello()

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
Python实现端口复用实例代码
Jul 03 Python
python实现中文输出的两种方法
May 09 Python
python从网络读取图片并直接进行处理的方法
May 22 Python
Python切换pip安装源的方法详解
Nov 18 Python
Python使用POP3和SMTP协议收发邮件的示例代码
Apr 16 Python
浅析Python3中的对象垃圾收集机制
Jun 06 Python
浅谈pytorch池化maxpool2D注意事项
Feb 18 Python
浅析matlab中imadjust函数
Feb 27 Python
关于Python 中的时间处理包datetime和arrow的方法详解
Mar 19 Python
Python爬虫设置ip代理过程解析
Jul 20 Python
python集合的新增元素方法整理
Dec 07 Python
Django如何重置migration的几种情景
Feb 24 Python
python显示生日是星期几的方法
May 27 #Python
python中zip和unzip数据的方法
May 27 #Python
Python pickle模块用法实例分析
May 27 #Python
Python创建模块及模块导入的方法
May 27 #Python
Python类的用法实例浅析
May 27 #Python
Python socket编程实例详解
May 27 #Python
Python简单删除目录下文件以及文件夹的方法
May 27 #Python
You might like
收音机术语解释
2021/03/01 无线电
实测在class的function中include的文件中非php的global全局环境
2013/07/15 PHP
php创建多级目录的方法
2015/03/24 PHP
php递归调用删除数组空值元素的方法
2015/04/28 PHP
PHP中array_keys和array_unique函数源码的分析
2016/02/26 PHP
如何优雅的使用 laravel 的 validator验证方法
2018/11/11 PHP
JQUERY设置IFRAME的SRC值的代码
2010/11/30 Javascript
js实现透明度渐变效果的方法
2015/04/10 Javascript
js+html5实现canvas绘制镂空字体文本的方法
2015/06/05 Javascript
原生JS实现匀速图片轮播动画
2016/10/18 Javascript
微信小程序分享功能之按钮button 边框隐藏和点击隐藏
2018/06/14 Javascript
解决LayUI表单获取不到data的问题
2018/08/20 Javascript
详解小程序不同页面之间通讯的解决方案
2018/11/23 Javascript
Vue项目中配置pug解析支持
2019/05/10 Javascript
Node.js安装详细步骤教程(Windows版)详解
2019/09/01 Javascript
jQuery 实现DOM元素拖拽交换位置的实例代码
2020/07/14 jQuery
Javascript表单序列化原理及实现代码详解
2020/10/30 Javascript
JavaScript实现H5接金币功能(实例代码)
2021/02/22 Javascript
[40:19]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第二场 12.18
2020/12/19 DOTA
用python登录Dr.com思路以及代码分享
2014/06/25 Python
详解python3中zipfile模块用法
2018/06/18 Python
python基于paramiko将文件上传到服务器代码实现
2019/07/08 Python
python Django中models进行模糊查询的示例
2019/07/18 Python
利用python在大量数据文件下删除某一行的例子
2019/08/21 Python
tensorflow 2.1.0 安装与实战教程(CASIA FACE v5)
2020/06/30 Python
Python pandas对excel的操作实现示例
2020/07/21 Python
Python 实现简单的客户端认证
2020/07/29 Python
学校司机岗位职责
2013/11/14 职场文书
电脑教师的教学自我评价
2013/11/26 职场文书
俄罗斯商务邀请函
2014/01/26 职场文书
取保候审保证书
2014/04/30 职场文书
软件售后服务方案
2014/05/29 职场文书
学生顶撞老师的检讨书
2014/09/17 职场文书
工作简报格式范文
2015/07/21 职场文书
Win11怎么添加用户?Win11添加用户账户的方法
2022/07/15 数码科技
CSS link与@import的区别和用法解析
2023/05/07 HTML / CSS