有点迷糊class和初始化参数的用法了

2023-12-02 23:36

本文主要是介绍有点迷糊class和初始化参数的用法了,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

翻阅手册https://www.runoob.com/python3/python3-class.html

Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的。本章节我们将详细介绍Python的面向对象编程。

如果你以前没有接触过面向对象的编程语言,那你可能需要先了解一些面向对象语言的一些基本特征,在头脑里头形成一个基本的面向对象的概念,这样有助于你更容易的学习Python的面向对象编程。

面向对象技术简介

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

Python中的类提供了面向对象编程的所有基本功能:类的继承机制允许多个基类,派生类可以覆盖基类中的任何方法,方法中可以调用基类中的同名方法。

对象可以包含任意数量和类型的数据。

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

属性引用使用和 Python 中所有的属性引用一样的标准语法:obj.name。

类对象创建后,类命名空间中所有的命名都是有效属性名。所以如果类定义是这样:

#!/usr/bin/python3class MyClass:"""一个简单的类实例"""i = 12345def f(self):return 'hello world'# 实例化类
x = MyClass()# 访问类的属性和方法
print("MyClass 类的属性 i 为:", x.i)
print("MyClass 类的方法 f 输出为:", x.f())

在这里插入图片描述
类有一个名为 init() 的特殊方法(构造方法),该方法在类实例化时会自动调用,像下面这样:
【就是这里迷糊了】
迷糊什么呢?是参数传递的时候我必须把他写成def init(self):……………………这种吗????

def __init__(self):self.data = []

找啊找……

类定义了 init() 方法,类的实例化操作会自动调用 init() 方法。

在这里插入图片描述

#!/usr/bin/python3class Complex:def __init__(self, realpart, imagpart):self.r = realpartself.i = imagpart
x = Complex(3.0, -4.5)
print(x.r, x.i)   # 输出结果:3.0 -4.5

这是什么意思???是调用了类,这个方法就会被自动调用吗???
我的理解是通过这个方法,可以将参数传递进去,在调用类之后,可以直接指定类里边的哪个哪个参数。
在这里插入图片描述

类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。

在这里插入图片描述

python中class 的用法

在Python中,class(类)是一种创建对象的蓝图,它定义了对象的属性和方法。类是面向对象编程(Object-Oriented Programming,OOP)的基础,允许你组织代码并创建可重复使用的结构。

以下是一个简单的Python类的示例,演示了类的基本结构和用法:

class Person:# 类属性species = "Homo sapiens"# 初始化方法(构造函数)def __init__(self, name, age):# 实例属性self.name = nameself.age = age# 实例方法def greet(self):return f"Hello, my name is {self.name} and I'm {self.age} years old."# 创建类的实例
person1 = Person("Alice", 30)
person2 = Person("Bob", 25)# 访问实例属性和调用实例方法
print(person1.name)   # 输出: Alice
print(person2.greet())  # 输出: Hello, my name is Bob and I'm 25 years old.# 类属性是所有实例共享的
print(person1.species)  # 输出: Homo sapiens
print(person2.species)  # 输出: Homo sapiens

上述示例中,我们定义了一个名为 Person 的类。该类有一个类属性 species 表示人类的物种。类还包含一个构造函数 __init__,用于初始化对象的实例属性 nameage。类还包含一个实例方法 greet,用于返回一个问候语。最后,我们创建了两个 Person 类的实例,并演示了如何访问实例属性和调用实例方法。

类提供了一种组织代码和数据的有效方式,使得代码更易于理解、维护和扩展。

初始化参数的作用是什么?

构造初始化方法(通常被称为构造函数)在类中的作用是在创建类的实例时进行初始化操作这个方法是在实例化对象时自动调用的,允许你对对象的属性进行设置,以确保对象的初始状态是正确的。

在Python中,初始化方法的名称是__init__。它接受self参数,该参数是指向对象实例的引用,然后可以接受其他参数,用于为对象的属性赋初值。通过初始化方法,你可以在创建对象时执行一些必要的设置、赋值或其他操作。

以下是一个简单的示例,演示了初始化方法的作用:

class Person:def __init__(self, name, age):# 在初始化方法中设置实例属性self.name = nameself.age = agedef greet(self):return f"Hello, my name is {self.name} and I'm {self.age} years old."# 创建类的实例时调用初始化方法
person1 = Person("Alice", 30)
person2 = Person("Bob", 25)# 调用实例方法
print(person1.greet())  # 输出: Hello, my name is Alice and I'm 30 years old.
print(person2.greet())  # 输出: Hello, my name is Bob and I'm 25 years old.

在上述示例中,__init__ 方法接收 nameage 作为参数,并在初始化对象时将这些参数赋值给 self.nameself.age,从而确保对象在创建时就有了初始状态。

使用初始化方法可以使对象在创建时变得更加灵活和可控,同时提供了一个方便的途径来传递初始数据。

这篇关于有点迷糊class和初始化参数的用法了的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/447278

相关文章

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效

QT进行CSV文件初始化与读写操作

《QT进行CSV文件初始化与读写操作》这篇文章主要为大家详细介绍了在QT环境中如何进行CSV文件的初始化、写入和读取操作,本文为大家整理了相关的操作的多种方法,希望对大家有所帮助... 目录前言一、CSV文件初始化二、CSV写入三、CSV读取四、QT 逐行读取csv文件五、Qt如何将数据保存成CSV文件前言

C#中async await异步关键字用法和异步的底层原理全解析

《C#中asyncawait异步关键字用法和异步的底层原理全解析》:本文主要介绍C#中asyncawait异步关键字用法和异步的底层原理全解析,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录C#异步编程一、异步编程基础二、异步方法的工作原理三、代码示例四、编译后的底层实现五、总结C#异步编程

C++中初始化二维数组的几种常见方法

《C++中初始化二维数组的几种常见方法》本文详细介绍了在C++中初始化二维数组的不同方式,包括静态初始化、循环、全部为零、部分初始化、std::array和std::vector,以及std::vec... 目录1. 静态初始化2. 使用循环初始化3. 全部初始化为零4. 部分初始化5. 使用 std::a

python3 gunicorn配置文件的用法解读

《python3gunicorn配置文件的用法解读》:本文主要介绍python3gunicorn配置文件的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python3 gunicorn配置文件配置文件服务启动、重启、关闭启动重启关闭总结python3 gun

SpringMVC获取请求参数的方法

《SpringMVC获取请求参数的方法》:本文主要介绍SpringMVC获取请求参数的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下... 目录1、通过ServletAPI获取2、通过控制器方法的形参获取请求参数3、@RequestParam4、@

MySQL 中的 LIMIT 语句及基本用法

《MySQL中的LIMIT语句及基本用法》LIMIT语句用于限制查询返回的行数,常用于分页查询或取部分数据,提高查询效率,:本文主要介绍MySQL中的LIMIT语句,需要的朋友可以参考下... 目录mysql 中的 LIMIT 语句1. LIMIT 语法2. LIMIT 基本用法(1) 获取前 N 行数据(

C#中DrawCurve的用法小结

《C#中DrawCurve的用法小结》本文主要介绍了C#中DrawCurve的用法小结,通常用于绘制一条平滑的曲线通过一系列给定的点,具有一定的参考价值,感兴趣的可以了解一下... 目录1. 如何使用 DrawCurve 方法(不带弯曲程度)2. 如何使用 DrawCurve 方法(带弯曲程度)3.使用Dr

C++ vector的常见用法超详细讲解

《C++vector的常见用法超详细讲解》:本文主要介绍C++vector的常见用法,包括C++中vector容器的定义、初始化方法、访问元素、常用函数及其时间复杂度,通过代码介绍的非常详细,... 目录1、vector的定义2、vector常用初始化方法1、使编程用花括号直接赋值2、使用圆括号赋值3、ve

MySQL中FIND_IN_SET函数与INSTR函数用法解析

《MySQL中FIND_IN_SET函数与INSTR函数用法解析》:本文主要介绍MySQL中FIND_IN_SET函数与INSTR函数用法解析,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一... 目录一、功能定义与语法1、FIND_IN_SET函数2、INSTR函数二、本质区别对比三、实际场景案例分