python类继承与重构

Posted moonok

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python类继承与重构相关的知识,希望对你有一定的参考价值。

python类继承与重构

0 对象

  • 通过类定义的数据结构实例。
  • 对象包括两个数据成员(类变量和实例变量)和方法。

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
class Employee:
   ‘所有员工的基类‘
   empCount = 0
 
   def __init__(self, name, salary):
      self.name = name
      self.salary = salary
      Employee.empCount += 1
   
   def displayCount(self):
     print "Total Employee %d" % Employee.empCount
 
   def displayEmployee(self):
      print "Name : ", self.name,  ", Salary: ", self.salary
      
  • empCount 变量是一个类变量,它的值将在这个类的所有实例之间共享。你可以在内部类或外部类使用 Employee.empCount 访问。
  • 第一种方法__init__()方法是一种特殊的方法,被称为类的构造函数或初始化方法,当创建了这个类的实例时就会调用该方法
  • self 代表类的实例,self 在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数

self代表类的实例,而非类

  • 类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。
class Test:
    def prt(self):
        print(self)
        print(self.__class__)
 
t = Test()
t.prt()

以上实例执行结果为:

<__main__.Test instance at 0x10d066878>
__main__.Test
  • 从执行结果可以很明显的看出,self 代表的是类的实例,代表当前对象的地址,而 self.class 则指向类。
  • self 不是 python 关键字,我们把他换成 runoob 也是可以正常执行的:

  • 你可以添加,删除,修改类的属性。

类的继承

  • 在python中继承中的一些特点:
  1. 在继承中基类的构造(init()方法)不会被自动调用,它需要在其派生类的构造中亲自专门调用。
  2. 在调用基类的方法时,需要加上基类的类名前缀,且需要带上self参数变量。区别在于类中调用普通函数时并不需要带上self参数
  3. Python总是首先查找对应类型的方法,如果它不能在派生类中找到对应的方法,它才开始到基类中逐个查找。(先在本类中查找调用的方法,找不到才去基类中找)。

1 方法重写

  • 如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。

以上是关于python类继承与重构的主要内容,如果未能解决你的问题,请参考以下文章

重构以避免在使用抽象类而不是接口时进行多重继承

如何重构这个 Java 代码片段

python之旅:面向对象之继承与派生

java 代码片段

python系统学习14类的继承与创新

python-继承与重用