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)
四、成员创建与访问
-
实例属性:通过
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!
-
类属性:直接在类中定义,所有实例共享。
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 类进行面向对象编程。