python ---- class类详解

1、class的定义

Python 中定义一个类使用 class 关键字实现,其基本语法格式如下:

python 复制代码
class 类名:
    多个(≥0)类属性...
    多个(≥0)方法...

类名一般建议每个单词的首字母大写,其它字母小写,类名后继续接冒号(:)

2、__init__构造方法

构造方法用于创建对象时使用,每当创建一个类的实例对象时,Python 解释器都会自动调用它,并且一个类中只能有一个__init__构造方法。Python 类中,构造方法的语法格式如下:

python 复制代码
def __init__(self,...):
    代码块

该构造方法的参数个数必须大于等于1,第一个参数通常命名为self(也可以用其他命名),代表对象本身;仅包含 self 参数的 init() 构造方法,又称为类的默认构造方法,除了self参数之外,还可以指定其他参数。即便不手动为类添加任何构造方法,Python 也会自动为类添加一个仅包含 self 参数的构造方法。示例如下:

python 复制代码
class HelloWorld:
    
    def __init__(self):
        print("调用构造方法")
    
    def say(hh,content):
        print(content)


helloworld=HelloWorld()
helloworld.say("i am lichf")

当创建对象的时候,会调用__init__构造方法

powershell 复制代码
PS C:\Users\love1\Documents\technology\python\project> python .\test1.py
调用构造方法
i am lichf
PS C:\Users\love1\Documents\technology\python\project>

3、属性

  • 类属性
    类属性是指定义在类中,但却在各个方法外定义的变量,示例如下:
python 复制代码
class HelloWorld:
    
    # 类属性
    name = "lichf"
    age = 18
    def __init__(self):
        print("调用构造方法")
    
    def say(hh,content):
        print(content)

类属性的特点是,所有类的实例化对象都同时共享类变量,也就是说,类变量在所有实例化对象中是作为公用资源存在的。类方法的调用方式有 2 种,既可以使用类名直接调用,也可以使用类的实例化对象调用。即

python 复制代码
HelloWorld.name
helloworld=HelloWorld()
helloworld.name
  • 实例属性
    实例变量指的是在实例方法内部,以"self.变量名"的方式定义的变量,其特点是只作用于调用方法的对象。另外,实例变量只能通过对象名访问,无法通过类名访问。示例如下:
python 复制代码
class Person:
    def __init__(self):
        self.name = "feike"
        self.age= 18
    # 下面定义了一个say实例方法
    def info(self):
        self.addr= "henan"

其中 self.name 、self.age、self.addr 都是实例变量,其中self.addr属性只有当对象实例调用info()方法的时候才会被添加到该实例中去。

4、方法

  • 实例方法
    实例方法的调用:
    instance.实例方法(args)
    class类名.实例方法(instance,args)
python 复制代码
class B:
    def __init__(self):
        self.l="lichf"
        self.n="19"
        self.i="henan"
    def __str__(self):
        return self.l+self.n+self.i
    def add(self,age):
        print(int(self.n)+age)
b= B()
b.add(11) # 同B.add(b,11)
B.add(b,11)

30
30
  • 类方法

  • 静态方法

相关推荐
卷毛的技术笔记15 分钟前
告别硬编码!Spring AI Alibaba 实现 AI Agent 智能工具调用(Tool Calling)
java·人工智能·后端·python·spring·ai编程
编程大师哥15 分钟前
匿名函数 lambda + 高阶函数
java·python·算法
isyangli_blog17 分钟前
OpenDayLight (Carbon 版本) 启动与组件安装
开发语言·php
vb20081125 分钟前
FastAPI APIRouter
开发语言·python
Benszen27 分钟前
KVM虚拟化解决方案
开发语言·perl
会编程的土豆28 分钟前
Go 语言反射(Reflection)详解
开发语言·后端·golang
東雪木30 分钟前
多线程与并发编程 专属复习笔记
java·开发语言·笔记·java面试
adrninistrat0r35 分钟前
Java调用链MCP分析工具
java·python·ai编程
杨充1 小时前
1.3 浮点型数据设计灵魂
开发语言·python·算法
噜噜噜阿鲁~1 小时前
python学习笔记 | 11.3、面向对象高级编程-多重继承
java·开发语言