类的继承python事例_【Python五篇慢慢弹(5)】类的继承案例解析,python相关知识延伸...

作者:白宁超2016年10月10日22:36:57摘要:继一文之后,笔者又将python官方文档认真学习下。官方给出的pythondoc入门资料包含了基本要点。本文是对文档常用核心要点进行梳理,简单冗余知识不再介绍,作者假使你用c/java/c#/c++任一种语言基础。本系列文章属于入门内容,老鸟可以略看也可以略过,新鸟可以从篇一先接触下python怎样安装与运行,以及pycharm编辑器的使用和...
摘要由CSDN通过智能技术生成

作者:白宁超

2016年10月10日22:36:57

摘要:继一文之后,笔者又将python官方文档认真学习下。官方给出的pythondoc入门资料包含了基本要点。本文是对文档常用核心要点进行梳理,简单冗余知识不再介绍,作者假使你用c/java/c#/c++任一种语言基础。本系列文章属于入门内容,老鸟可以略看也可以略过,新鸟可以从篇一先接触下python怎样安装与运行,以及pycharm编辑器的使用和配置;篇二介绍python语言中控制语句、列表、字典、元组、循环等基本操作;篇三细解python语言函数的范畴与内容;篇四采用登录的案例详解模块来龙去脉;篇五介绍类的基本操作,扩展虚拟环境、标准类库和下个系列预告。(本文原创,转载注明出处:类的继承案例解析,python相关知识延伸)

目录:

【Python五篇慢慢弹(1)】快速上手学python

【Python五篇慢慢弹(2)】数据结构看python

【Python五篇慢慢弹(3)】函数修行知python

【Python五篇慢慢弹(4)】模块异常谈python

1 类的相关介绍

【小记】本文中所有代码经过测试均可正常运行,python有个问题就是复制后会破坏原有格式。所以读者复制运行时报如下错误:SyntaxError: expected an indented block,是因为空格问题,可以预留4个空格,或者采用tab键空格,本篇也是系列文章的结束,除了类的相关介绍,后面扩展一些独立的知识点,下一个系列将是python自然语言处理系列文章,敬请期待......

命名空间 :从命名到对象的映射。当前命名空间主要是通过 Python 字典实现的.Python 中任何一个“.”之后的命名可以理解为属性 --例如,表达式 z.real 中的 real 是对象 z 的一个属性。如:

表达式 modname.funcname 中,modname 是一个模块对象,funcname 是它的一个属性

因此,模块的属性和模块中的全局命名有直接的映射关系:它们共享同一命名空间,作用域 是一个 Python 程序可以直接访问命名空间的正文区域。至少有三个命名空间可以直接访问的作用域嵌套在一起,包含局部命名的使用域在最里面,首先被搜索;其次搜索的是中层的作用域,这里包含了同级的函数;最后搜索最外面的作用域,它包含内置命名。global 语句用以指明某个特定的变量为全局作用域,并重新绑定它。nonlocal 语句用以指明某个特定的变量为封闭作用域,并重新绑定它。

作用域和命名空间示例

def scope_test():

def do_local():

spam = "local spam"

def do_nonlocal():

nonlocal spam

spam = "nonlocal spam"

def do_global():

global spam

spam = "global spam"

spam = "test spam"

do_local()

print("After local assignment:", spam)

do_nonlocal()

print("After nonlocal assignment:", spam)

do_global()

print("After global assignment:", spam)

scope_test()

print("In global scope:", spam)

运行结果:

解析:

local 赋值语句是无法改变 scope_test 的 spam 绑定。nonlocal 赋值语句改变了 scope_test 的 spam 绑定,并且 global 赋值语句从模块级改变了 spam 绑定。

类的正确设计应该使用一个实例变量

class Dog:

def __init__(self, name):

self.name = name

self.tricks = [] # creates a new empty list for each dog

def add_trick(self, trick):

self.tricks.append(trick)

d = Dog('Fido')

d.add_trick('roll over')

print(d.tricks)

R运行结果:

E:\Python\python.exe E:/sourceCode/pydata/AddPro/MothedDome.py

['roll over']

Process finished with exit code 0

命名空间:

①大写方法名称的首字母,使用一个唯一的小字符串(也许只是一个下划线)作为数据属性名称的前缀,或者方法使用动词而数据属性使用名词。

②类不能用来实现③数据类型。

③一般,方法的第一个参数被命名为 self。这仅仅是一个约定:对 Python 而言,名称 self 绝对没有任何特殊含义。

④函数定义代码不一定非得定义在类中:也可以将一个函数对象赋值给类中的一个局部变量。例如:

通过 self 参数的方法属性,方法可以调用其它的方法:

class Bag:

def __init__(self):

self.data = []

def add(self, x):

self.data.append(x)

def addtwice(self, x):

self.add(x)

self.add(x)

2、类继承实例解析

实例分析:在python中类继承案例,要求如下:

① 创建一个BaseSubDome.py文件,编写类继承文件

② 父类是动物类,有初始化函数,且有动物讲话的方法

③ 子类是一个狗类,继承父类所有属性,并扩展自己方法

④ 调用子类讲话方法,并直接调用父类讲话方法

类继承实例:

#!/usr/bin/env python

# -*- coding: utf-8

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值