python中类、实例化、构造方法、继承、重写等概念的整理笔记

本文整理了Python中的类定义、实例化过程、构造方法(__init__)的使用以及继承和重写的概念。类是对象的模板,包含属性和方法。实例化是将类转化为对象的过程,构造方法用于初始化对象属性。继承允许子类继承父类的属性和方法,重写则允许子类定制父类的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python中类、实例化、构造方法、继承、重写等概念的整理笔记

一、关于类:

1、类的定义:

定义:定义该集合中每个对象所共有的属性和方法。
例如:人类可以看作一个类,类有一些属性和功能,例如人类有名字、身高、体重等属性,需要定义每个人的属性值;有说话、走路、喝水等行为,定义说话、喝水的行为即为方法。

class People:
    def __init__(self, voice, name='', high=''):
        self.name = name       # 定义人类的姓名属性
        self.high = high       # 定义人类的身高属性
        self.voice = voice

    def say(self):            # 定义人类说话的方法
        print(self.name, self.voice)


if __name__ == '__main__':
    People("小明").say()
    People("Sweet").say()

在这里插入图片描述

知识补充

(1)关于静态属性:
关于静态属性:
位置:在class下边的直接定义    变量名 = 值    属于静态属性
访问方法:
1.类名.属性名访问
2.类内 self.属性名
3.实例化的对象名.属性名访问
所以实例化的同名类的对象共用一套静态属性和静态方法。
对于私有属性,也就是在构造函数中self.属性名定义的,实例化的对象修改自己的属性后,
不会影响其它的对象,但是静态属性一旦被修改,调用该属性的方法返回的值都会被修改。

class是一个模板,并不存在与内存中,不管创建几个对象,静态属性和方法都只有一套。如图所示:

在这里插入图片描述

 对象是基于Class创建的,Class不占用内存,只是一套创建规则,
 Class中可以包含占用内存的静态属性和静态方法,
 所以不论使用那种方法修改类的静态属性,
 再次读取后都会改变,也就是所有对象和类模板共用一套静态属性和静态方法。
 特别注意的是,不同的类名之间的静态方法和属性是不共用的。
(2)关于类、方法、静态属性、对象的关系图如下:

在这里插入图片描述

(3)静态方法的调用方法:

1.类名.方法名
2.实例化的对象名.方法名
非静态方法必须有self:
def speak(self): # 定义人类说话的方法
print(“Chinese”)

2、类的三部分组成:

类由三部分组成:
类的名称:类名
类的属性:指对象的特征(一组数据)
类的方法:允许对象进行操作的方法 (行为/功能)

3、类对象支持两种操作:属性引用 和 实例化。

 属性引用的语法:obj.属性
 类实例化的语法:obj = 类名()
 类中方法的调用:obj.方法名()

二、实例化:

定义:类到对象的过程。
实例化的过程:
1、创建一个实例/对象,实例名 = 类名(参数1,参数2)
2、会先调用__init__构造方法,以初始化对象的各属性,对象默认名字是self(在类内部无法知道对象的名字,self指代对象名)。类的各属性(成员变量)均可以在构造函数中定义,定义时只要加上对象指针即可。
3、执行完__init__方法之后,会将self所指向的内存空间返回给实例化它的地方

三、构造方法

init(self) 是类的初始化方法,也称构造方法。
init(self)在实例化后,会自动调用,而不用手动调用,所以一般把属性设置在_init__()里。

使用方法一:

class People:
    def __init__(self):
        self.age = 18


if __name__ == '__main__':
    xiao_hong = People()
	print(xiao_hong.age)

# 输出结果为:18

使用方法二:
带参数引用:

class People:
    def __init__(self, value=18):
        self.age = value


if __name__ == '__main__':
    xiao_hong = People()
    print(xiao_hong.age)

子类中重写了构造方法,将覆盖父类的构造方法。

四、继承:

代码参考https://www.cnblogs.com/bigberg/p/7182741.html
继承概念的实现方式主要有2类:实现继承、接口继承。
实现继承是指使用基类的属性和方法而无需额外编码的能力。
接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力(子类重构爹类方法)。

1、类的继承:

class Person(object):   # 定义一个父类
    def talk(self):     # 父类中的方法
        print("talk:hello,hello")

        
class Chinese(Person):    # 定义一个子类, 继承Person类
    def walk(self):       # 在子类中定义其自身的方法
        print("walk:one,two,three")


if __name__ == '__main__':
    xiao_ming = Chinese()
    xiao_ming.talk()      # 调用继承的Person类的方法
    xiao_ming.walk()      # 调用本身的方法

在这里插入图片描述

2、构造函数的继承:

1.经典类的写法: 父类名称.init(self,参数1,参数2,…)
2. 新式类的写法:super(子类,self).init(参数1,参数2,…)

class Person(object):

    def __init__(self, name, age, weight):
        self.name = name
        self.age = age
        self.weight = weight


class Chinese(Person):

    def __init__(self, name, age, weight, language):  # 先继承,在重构
        super(Chinese, self).__init__(name, age, weight)
        self.language = language    # 定义类的本身属性


if __name__ == '__main__':
    xiao_ming = Chinese("xiaoming", "18", "100", "Chinese")
    print(xiao_ming.name)
    print(xiao_ming.age)
    print(xiao_ming.weight)
    print(xiao_ming.language)

在这里插入图片描述

3、子类对父类的重写

定义:子类包含与父类同名的方法的现象被称为方法重写(Override)。
例如:所有的鸟都有fly()方法,麻雀是鸟类的一种,不具备所有鸟类的fly()方法,麻雀是鸟类的子类,所以要具体麻雀fly()方法,要重写鸟类的fly()方法。

class Bird:
    def fly(self):        # 定义Bird类的fly()方法
        print("鸟类作为父类随意飞翔")


class Small_Bird(Bird):
    def fly(self):        # 重写Bird类的fly()方法
        print("作为子类只能低空飞翔")


if __name__ == '__main__':
    bird = Bird()         # 创建鸟类对象
    bird.fly()            # 调用鸟类对象的fly()方法
    Maque = Small_Bird()  # 创建麻雀对象
    Maque.fly()           # 调用麻雀对象的fly()方法

在这里插入图片描述

python中的其他定义可参考以下链接学习:

python中定义详细讲解https://www.cnblogs.com/LearningOnline/p/8512041.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值