Python中面向对象和类

目录

面向对象

类的定义

类的访问

类的属性和方法

继承和多态


面向对象

Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的。

面向对象:

  • 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
  • 方法:类中定义的函数。
  • 类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
  • 数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。
  • 方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
  • 实例变量:定义在方法中的变量,只作用于当前实例的类。
  • 继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(例图,Dog是一个Animal)。
  • 实例化:创建一个类的实例,类的具体对象。
  • 对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。

类的定义

class Student(object):     //object是继承的父类,如果没有可不写,object是所有类的父类
    '''类的注释,可以通过属性 __doc__ 获取其值'''
    name='xie'             // 公有属性
    _age=20                // 私有属性,只有类内部才能访问
    __author__='xiaoxie'   // 特殊属性 __author__
    def __init__(self):    // 类的构造函数,第一个参数永远是self,表示创建的实例本身
        pass 
    def Test():            // 类的公有方法
        return("类的公有方法")
    def _Test2():          // 类的私有方法
        return("类的私有方法,外部不能访问")

类的访问

类的访问有两种:属性引用和类的实例化

属性引用
>>print(Student.name)
xie

类的实例化
>>stu=Student()
>>print(stu.name)
xie

类的属性和方法

公有属性:name
私有属性:_age
内置特殊属性:
__doc__          就是类里面通过 ''' ''' 的注释内容
__name__         就是类的名字
__author__       也就是类的作者

公有方法:Test()
私有方法:Test2()

类方法:  被classmethod()函数处理过的函数,能被类所调用,也能被对象所调用(是继承的关系),第一个参数不是self而是cls(当前的类)
静态方法: 相当于全局函数,可以被类直接调用,可以被所有实例化对象共享,通过staticmethod()定义,静态方法没有 self 参数

构造方法:
       用于初始化类的内部状态,Python提供的构造函数是__init__(); 
       __init__()方法是可选的,如果不提供,Python会给出一个默认的的init方法

析构方法:
       用于释放对象占用的资源,Python提供的析构函数是del(); 
       del()也是可选的,如果不提供,则Python会在后台提供默认析构函数
 

继承和多态

当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类、父类或超类(Base class、Super class)

class Father:
    money=100
    __money=1000                        //父类的私有属性不能被继承

    def run(self):
        print("这是父类的方法")

class Mother:
    money=500                           //父亲有这个属性,所以只继承父亲的属性
    height=170

    def run(self):
        print("这是母亲的方法")

class Son(Father,Mother):               //同时继承父亲和母亲,多重继承
    def run(self):
        print("这是儿子的方法")           //重载父类的方法
        Father.run(self)                 //也可以调用父类的方法

jerry=Son()
print(jerry.money,jerry.height)
jerry.run()
// 100 170
// 这是儿子的方法
// 这是父类的方法

猜你喜欢

转载自blog.csdn.net/qq_36119192/article/details/83586500