Python 基础教程:面向对象

  • 类(Class): 用来描述具有相同的属性和方法的对象的集合。定义了该集合中每个对象所共有的属性和方法。

  • 类变量:在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外,通常不作为实例变量使用。

  • 数据成员:类变量或者实例变量, 用于处理类及其实例对象的相关的数据。

  • 方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写。

  • 局部变量:定义在方法中的变量,只作用于当前实例的类。

  • 实例变量:在类的声明中,属性是用变量来表示的。这种变量就称为实例变量,是在类声明的内部但是在类的其他成员方法之外声明的。

  • 继承:即一个派生类(derived class)继承基类(base class)的字段和方法。

创建群一个类

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

类的属性

  • dict : 类的属性(包含一个字典,由类的数据属性组成)

  • doc :类的文档字符串

  • name: 类名

  • module: 类定义所在的模块(类的全名是'__main__.className',如果类位于一个导入模块mymod中,那么className.__module__ 等于 mymod)

  • bases : 类的所有父类构成元素(包含了一个由所有父类组成的元组)

私有属性

  • foo: 定义的是特殊方法,一般是系统定义名字 ,类似 init() 之类的。

  • _foo: 以单下划线开头的表示的是 protected 类型的变量,即保护类型只能允许其本身与子类进行访问,不能用于 from module import *

  • __foo: 双下划线的表示的是私有类型(private)的变量, 只能是允许这个类本身进行访问了,字类无法继承

访问私有属性

class Cat():
    def __init__(self, name, age):
        self.__name = name
        self.age = age


if __name__ == '__main__':
    cat1 = Cat('喵喵', 22)
    print(cat1.age)
    print(cat1.name)

上述无法访问会报错,因为 name 是私有属性

class Cat():
    def __init__(self, name, age):
        self.__name = name
        self.age = age

    def get_name(self):
        return self.__name


if __name__ == '__main__':
    cat1 = Cat('喵喵', 22)
    print(cat1.age)
    print(cat1.get_name())

类的继承

class 派生类名(基类名)
    ...




# 具体案例


class Parent:        # 定义父类
   parentAttr = 100
   def __init__(self):
      print "调用父类构造函数"
 
   def parentMethod(self):
      print '调用父类方法'
 
   def setAttr(self, attr):
      Parent.parentAttr = attr
 
   def getAttr(self):
      print "父类属性 :", Parent.parentAttr
 
class Child(Parent): # 定义子类
   def __init__(self):
      print "调用子类构造方法"
 
   def childMethod(self):
      print '调用子类方法'
 
c = Child()          # 实例化子类
c.childMethod()      # 调用子类的方法
c.parentMethod()     # 调用父类方法
c.setAttr(200)       # 再次调用父类的方法 - 设置属性值
c.getAttr()          # 再次调用父类的方法 - 获取属性值

相关推荐

  1. Python 基础教程面向对象

    2024-03-31 23:28:08       5 阅读
  2. 基础Python面向对象

    2024-03-31 23:28:08       22 阅读
  3. Python基础20 面向对象(3)多态、封装、反射

    2024-03-31 23:28:08       17 阅读
  4. python面向对象反射

    2024-03-31 23:28:08       25 阅读

最近更新

  1. leetcode705-Design HashSet

    2024-03-31 23:28:08       8 阅读
  2. Unity发布webgl之后打开streamingAssets中的html文件

    2024-03-31 23:28:08       8 阅读
  3. vue3、vue2中nextTick源码解析

    2024-03-31 23:28:08       8 阅读
  4. 高级IO——React服务器简单实现

    2024-03-31 23:28:08       8 阅读
  5. 将图片数据转换为张量(Go并发处理)

    2024-03-31 23:28:08       7 阅读
  6. go第三方库go.uber.org介绍

    2024-03-31 23:28:08       8 阅读
  7. 前后端AES对称加密 前端TS 后端Go

    2024-03-31 23:28:08       9 阅读

热门阅读

  1. 关于 UnityEditorWindow

    2024-03-31 23:28:08       5 阅读
  2. 「PHP系列」PHP变量

    2024-03-31 23:28:08       6 阅读
  3. 计算机世界的“十六进制”为什么如此重要

    2024-03-31 23:28:08       5 阅读
  4. 蓝桥杯2014年第十三届省赛真题-切面条

    2024-03-31 23:28:08       5 阅读
  5. 【1单片机入门记录】DS18B20的应用

    2024-03-31 23:28:08       4 阅读
  6. C++中的类型转换

    2024-03-31 23:28:08       4 阅读
  7. C语言刷题(21)

    2024-03-31 23:28:08       5 阅读
  8. 算法刷题day37

    2024-03-31 23:28:08       4 阅读
  9. 优化代码分支

    2024-03-31 23:28:08       4 阅读