对Python中的class的理解

本文通过一个具体的Python脚本示例介绍了如何使用正则表达式从HTML字符串中提取时间信息。此外,还展示了一个包含全局变量及类方法调用的简单示例。
#! usr/bin/python3.5
# -*- coding: utf-8 -*-

import re
s = """<a class="time" target="_blank" href="">昨天 00:26</a>
<a class="time" target="_blank" href="">今天 00:26</a>"""

class BT(object):

    def __int__(self):
        pass
    def getTime(self):
        s = """<a class="time" target="_blank" href="">昨天 00:26</a>
        <a class="time" target="_blank" href="">今天 00:26</a>"""
        reg = r'<a class="time".*>(.*)</a>'
        timere = re.compile(reg)
        timelist = re.findall(timere, s)
        for t in timelist:
            print(t)

class Test:
    def __init__(self, name='testA'):
        self.x = 'age'
        self.name = name
        self.ex()  # 加上这个
        self.start()
    def ex(self):
        global oo
        oo = 'this is test'
    def start(self):
        print(oo)

if __name__ == '__main__':
    bt = BT()
    bt.getTime()
    test = Test()
    test.start()

输出结果:

<think>好的,用户想理解Python中的类(class)概念及用法。首先,我需要根据提供的引用资料来组织回答。用户可能刚接触面向对象编程,所以要从基础开始。 首先,类的概念。引用1和2都提到类是对现实实体的抽象,封装数据和方法。我需要用简单的例子说明,比如用“人”类有姓名、年龄等属性,以及说话的方法。 然后是类的结构,包括类名、属性和方法。引用4中的代码示例可以用来展示定义类的基本结构,比如class people,里面有属性和构造方法。 接下来是类的作用,封装、继承和多态。用户可能对这些概念不太熟悉,需要逐一解释,并举例子说明。比如继承,引用4中的student类继承自people,这里可以详细说明如何调用父类的方法和覆写方法。 使用方法部分,需要分步骤讲解:定义类、创建对象、访问属性和方法。要强调__init__方法的作用,引用2提到通过__init__初始化实例,这点很重要。同时,实例化部分要说明如何创建对象,比如s = student(...)。 关于类方法和静态方法,引用3和5提到cls和staticmethod的区别。用户可能容易混淆,需要解释类方法使用cls参数,而静态方法不需要self或cls。可以举例子说明何时使用它们,比如工厂方法或工具函数。 另外,引用3提到私有属性用双下划线,这点也要提到,比如__weight在people类中是私有的,外部无法直接访问。 需要确保回答结构清晰,分点说明,每个部分都结合引用中的例子。同时,用户可能想知道如何实际应用类,所以应用场景部分可以提到比如GUI开发、Web框架中的模型等。 最后,生成相关问题时要覆盖可能存在的疑问,比如继承、方法区别、私有属性等。确保问题有针对性,帮助用户深入理解。 检查是否有遗漏,比如特殊方法__add__,但用户主要关注概念和基础用法,可能不需要太深入。保持回答简洁但全面,引用正确来源,比如类方法用[^3],继承用[^4]等。</think>### Python类(Class)的概念与使用方法分步解析 #### 一、类的核心概念 类(Class)是面向对象编程的基础单元,用于**封装数据(属性)和操作数据的方法(行为)**。例如,$Human$ 类可以包含$name, age$属性和$speak()$方法[^1][^2]。 #### 二、类的结构 ```python class 类名: def __init__(self, 参数): # 构造方法 self.属性 = 参数 def 方法名(self): # 实例方法 方法体 ``` - **__init__**:初始化对象属性(必须包含self参数)[^2] - **self**:表示类的当前实例,用于访问实例属性和方法[^4] #### 三、类的四大核心操作 1. **定义类** ```python class Person: def __init__(self, name, age): self.name = name # 实例属性 self.age = age self.__secret = "私有属性" # 双下划线定义私有属性[^3] def introduce(self): print(f"我是{self.name},今年{self.age}岁") ``` 2. **实例化对象** ```python p1 = Person("张三", 25) # 创建实例 ``` 3. **访问属性和方法** ```python print(p1.name) # 访问公有属性 → 张三 p1.introduce() # 调用方法 → 我是张三,今年25岁 # print(p1.__secret) # 错误!私有属性无法直接访问[^3] ``` 4. **继承与多态** ```python class Student(Person): # 继承Person类[^4] def __init__(self, name, age, grade): super().__init__(name, age) # 调用父类构造 self.grade = grade def introduce(self): # 方法重写 print(f"我是{self.name},{self.age}岁,读{self.grade}年级") s = Student("李华", 12, 6) s.introduce() # 输出:我是李华,12岁,读6年级 ``` #### 四、进阶特性 1. **类方法与静态方法** ```python class MyClass: @classmethod def class_method(cls): # cls表示类本身 print("类方法调用", cls.__name__) @staticmethod def static_method(): # 无self/cls参数 print("静态方法调用") MyClass.class_method() # → 类方法调用MyClass MyClass.static_method() # → 静态方法调用[^3][^5] ``` 2. **特殊方法重载** ```python class Vector: def __init__(self, x, y): self.x = x self.y = y def __add__(self, other): # 重载+运算符 return Vector(self.x+other.x, self.y+other.y)[^2] ``` #### 五、典型应用场景 - GUI开发:创建窗口、按钮等控件类 - Web框架:定义数据模型(如Django的Model) - 游戏开发:角色、道具等实体建模 - 算法封装:将排序算法封装为可复用的类
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值