当前位置: 首页 > news >正文

python 类的相关知识, 介绍一下类的定义,创建类的实例,构造方法,创建类的成员并访问,以及访问限制的知识

Python 类的核心知识整理如下:


一、类的定义

  • 语法:使用 class 关键字,类名采用驼峰命名法,类体包含属性和方法。
    class MyClass:
        class_var = 0  # 类变量(所有实例共享)
    
        def __init__(self, name):
            self.name = name  # 实例变量(每个实例独有)
    
        def say_hello(self):
            print(f"Hello, {self.name}!")
    

二、创建类的实例

  • 通过类名后加括号实例化对象,若构造方法需要参数则需传入。
    obj = MyClass("Alice")  # 创建实例,传递参数给 __init__
    

三、构造方法 __init__

  • 用于初始化对象属性,第一个参数必须是 self,代表实例自身。
    class Person:
        def __init__(self, name, age):
            self.name = name
            self.age = age
    
    person = Person("Bob", 30)
    

四、成员创建与访问

  1. 实例属性:通过 self.属性名 在构造方法或其他方法中定义。

    class Dog:
        def __init__(self, name):
            self.name = name  # 实例属性
    
        def bark(self):       # 实例方法
            print(f"{self.name} says woof!")
    
    dog = Dog("Buddy")
    dog.bark()  # 输出: Buddy says woof!
    
  2. 类属性:直接在类中定义,所有实例共享。

    class Circle:
        pi = 3.14159  # 类属性
    
        def __init__(self, radius):
            self.radius = radius
    
    print(Circle.pi)  # 通过类名访问
    

五、访问限制

Python 通过命名约定实现访问控制:

  • 公有成员:无下划线开头,可自由访问。
  • 受保护成员:单下划线开头(如 _var),提示“不要直接访问”,但无强制限制。
  • 私有成员:双下划线开头(如 __var),Python 会对其重命名(如 _类名__var),阻止直接访问。
示例
class BankAccount:
    def __init__(self, balance):
        self.__balance = balance  # 私有属性

    def get_balance(self):        # 公有方法访问私有属性
        return self.__balance

account = BankAccount(1000)
print(account.get_balance())  # 正确:1000
print(account.__balance)      # 报错:AttributeError
print(account._BankAccount__balance)  # 强制访问(不推荐)

六、总结表

概念语法示例说明
类定义class MyClass:类名驼峰式,包含属性和方法
实例化obj = MyClass(args)调用类名创建对象,参数传给 __init__
构造方法def __init__(self, ...):初始化实例属性,self 为必需首参数
实例属性self.attr = value每个实例独立拥有
类属性类内部直接定义(如 class_var所有实例共享,可通过类名或实例访问
私有成员__private_var名称修饰为 _类名__private_var,外部无法直接访问
受保护成员_protected_var约定为内部使用,但可被外部访问

七、高级特性

  • @property 装饰器:控制属性访问逻辑。

    class Temperature:
        def __init__(self, celsius):
            self._celsius = celsius
    
        @property
        def celsius(self):
            return self._celsius
    
        @celsius.setter
        def celsius(self, value):
            if value < -273.15:
                raise ValueError("温度过低!")
            self._celsius = value
    
  • 继承与私有成员:子类无法直接访问父类私有成员,需通过父类方法或重命名后的属性(不推荐)。


通过理解这些核心概念,可以更高效地使用 Python 类进行面向对象编程。

相关文章:

  • 深搜专题10:组合
  • AI与.NET技术实操系列:ML.NET篇
  • 长度最小的子数组-滑动窗口解法
  • 我的世界1.20.1forge模组开发进阶教程——Geckolib动画实体(3)
  • ASL集睿致远 CS5265AN typec转hdmi4k60hz方案
  • 【Java】——运算符详解
  • 60V耐压 DC降压芯片SL3037B替换MP2459 MP2451 MP2456 MP2457
  • 19、TCP连接四次挥手的过程,为什么是四次?【高频】
  • 华为hcia——Datacom实验指南——TCP传输原理和数据段格式
  • 优选算法的匠心之艺:二分查找专题(一)
  • C语言【数据结构】:时间复杂度和空间复杂度.详解
  • 传感云揭秘:边缘计算的革新力量
  • 【Qt】QWidget属性介绍
  • Vmware安装ubuntu18.04
  • Kotlin apply 方法的用法和使用场景
  • 态势感知产品通用的一些安全场景设计
  • 防火墙虚拟系统配置
  • Gitlab报错:sudo: a password is required
  • 无障碍阅读(Web Accessibility)NVDA打开朗读查看器后,enter键不生效的原因
  • 如何处理PHP中的文件上传错误
  • 2025争做巾帼好网民活动启动,彰显新时代女性网民风采
  • 商务部就美国商务部调整芯片出口管制有关表述答记者问
  • 美国失去最后的AAA主权评级,继标普、惠誉后再遭穆迪降级
  • 机器人为啥热衷“搞体育”,经济日报:是向加速融入日常生活发起的冲锋
  • 总奖金池百万!澎湃与七猫非虚构写作与现实题材征文大赛征稿启动
  • 刘国中将出席第78届世界卫生大会并顺访瑞士、访问白俄罗斯