Python面向对象程序设计之类的定义与继承简单示例

 更新时间:2019年03月18日 08:43:57   作者:xuejianbest  
这篇文章主要介绍了Python面向对象程序设计之类的定义与继承,结合完整实例形式分析了Python面向对象程序设计中类的定义、调用、继承及相关操作注意事项,需要的朋友可以参考下

本文实例讲述了Python面向对象程序设计之类的定义与继承。分享给大家供大家参考,具体如下:

定义类:

class A:
  def __init__(self, name):
    self.name = name
  def say(self):
    print self.name
  def __del__(self):
    print "delete: %s" % self.name

1. python类的所有方法定义都必须至少含有一个参数,也就是self参数。在方法定义时作为第一个参数存在,self参数是类实例的引用。
2. __init__方法相当于构造函数,在获取类实例的时候会执行。
3. __del__方法相当于析构函数,会由系统自动调用(类似垃圾回收),也可以通过del对象主动调用。
4. 上例在__init__方法里定义了一个对象的变量name,可以在类内其他地方通过self.name引用。

获取类的实例并调用类方法:

a = A('Jim') #不用new
a.say() #Jim
A.say(a) #Jim

调用类的方法有两种方式:

1. 对象.方法名,此种方式self参数不需要指定,对象引用作为实参自动传入。
2. 类名.方法名,此种方式self参数需要指定为类实例的引用。

类变量和对象变量:

class A:
  pass
a = A()
print A.j #报错,因为A类中不存在类变量j
A.i = 1  #在A类中添加类变量i,并赋值1
print A.i #打印1
print a.i #打印1,这里的a.i实际上取到的是类A的类变量i,非对象a的对象变量i(其尚不存在)
a.j = 2  #在对象a中添加对象变量j,并赋值2
print A.j #报错,因为A类中不存在类变量j
print a.j #打印2
a.i = 3  #在对象a中添加对象变量i,并赋值3
b = A() 
print A.i #打印1,A.i取到的是A类中的类变量i
print a.i #打印3,a.i取到的是a对象中的对象变量i,取不到类A中的类变量i(因为重名优先获取对象变量)
print b.i #打印1,b.i取到的是A类中的类变量i

总结:

1. 对象的变量称为对象的域;类的变量称为类的域(相当于类静态变量)。类的域和方法合称类的属性。(我们没用域,而用了变量这个称呼)。
2. 类和对象的变量可以在类定义后随意添加。
3. 如果我们用 对象.i取用变量(取用而非赋值),会先试图取用对象变量i,若不存在则试图取用对象所属类中的类变量i,若还不存在则报错。
4. 可使用对象引用获取类变量值(在不存在重名的对象变量时),但不能用对象引用给类变量赋值(会创建同名对象变量)。

定义类变量:

在类内直接定义的变量是类变量,不属于某个特定对象,相当于静态变量,如:

class P:
  __pri = "private via"
  count = 1
print P.count #打印1
print P.__pri #报错,类P中没有名称为__pri的属性

1. 使用类变量通常用:类名.变量名
2. 类的属性默认是公有的;类定义中,变量名为双下划线开头的变量是私有的(依靠约定来保证)。

类的继承:

在类定义时,类名称后紧跟一个元组名,此类即为以元组的元素为父类的子类:

class SubClass(SuperClass):
   pass
class SubClass(SuperClass1, SuperClass2):
   pass

1. 若类没有显式的定义__init__方法,则python会自动生成一个__init__(self)方法;且如果这个类有父类,此子类自动生成的__init__(self)方法会依次调用父类的__init__(self)方法,若父类中没有__init__(self)这样的方法,执行就会报错。

2. 若显式定义__init__方法,父类的__init__方法不会自动调用,需要代码显式调用。这和java不同,java会自动在构造方法的第一句加入super()语句。

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python面向对象程序设计入门与进阶教程》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python编码操作技巧总结》及《Python入门与进阶经典教程

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

相关文章

  • Python标准库pickle的简单使用

    Python标准库pickle的简单使用

    本文主要介绍了Python标准库pickle的简单使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • 浅析python中的set类型

    浅析python中的set类型

    这篇文章主要介绍了python中的set类型,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • 对PyQt5基本窗口控件 QMainWindow的使用详解

    对PyQt5基本窗口控件 QMainWindow的使用详解

    今天小编就为大家分享一篇对PyQt5基本窗口控件 QMainWindow的使用详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • pandas数据拼接的实现示例

    pandas数据拼接的实现示例

    这篇文章主要介绍了pandas数据拼接的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • python文件头部声明#coding=utf-8问题

    python文件头部声明#coding=utf-8问题

    这篇文章主要介绍了python文件头部声明#coding=utf-8问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • python opencv通过4坐标剪裁图片

    python opencv通过4坐标剪裁图片

    图片剪裁是常用的方法,那么如何通过4坐标剪裁图片,本文就详细的来介绍一下,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • python决策树之CART分类回归树详解

    python决策树之CART分类回归树详解

    这篇文章主要为大家详细介绍了python决策树之CART分类回归树,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • 使用python对文件中的单词进行提取的方法示例

    使用python对文件中的单词进行提取的方法示例

    这篇文章主要介绍了使用python对文件中的单词进行提取的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12
  • 在Python中存储字符串

    在Python中存储字符串

    这篇文章主要介绍了在Python中存储字符串,文章通过unicode展开主题相关内容,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-05-05
  • Linux 修改Python命令的方法示例

    Linux 修改Python命令的方法示例

    这篇文章主要介绍了Linux 修改Python命令的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12

最新评论