在Python中,类的方法默认并不是classmethod
,而是实例方法。实例方法的第一个参数通常命名为self
,用于指向调用该方法的实例。classmethod
需要显式使用@classmethod
装饰器,并且第一个参数通常命名为cls
,指向类本身。
class MyClass:
# 实例方法
def instance_method(self):
print("这是一个实例方法")
# 类方法
@classmethod
def class_method(cls):
print("这是一个类方法")
# 静态方法
@staticmethod
def static_method():
print("这是一个静态方法")
# 创建类的实例
obj = MyClass()
# 调用实例方法
obj.instance_method() # 输出:这是一个实例方法
# 调用类方法
MyClass.class_method() # 输出:这是一个类方法
# 调用静态方法
MyClass.static_method() # 输出:这是一个静态方法
Python中的访问控制:Public, Private, Protected
Python中没有像C++或Java那样严格的访问控制,但可以通过命名约定和特定语法来实现类似的效果:
- Public:默认情况下,所有方法和属性都是公共的,可以在类外部访问。
2.Protected:
- 以单下划线
_
开头,表示受保护的属性或方法,约定上不建议在类外部直接访问。
3.Private:
- 以双下划线
__
开头,表示私有的属性或方法,Python会进行名称改写(name mangling),使其在类外部难以直接访问。
Python类中的全局变量和局部变量
- 类属性(类变量):
- 定义在类内部且在所有方法之外的变量。
- 共享给所有实例。
class MyClass: class_variable = 0 def __init__(self): MyClass.class_variable += 1
实例属性(实例变量):
- 定义在
__init__
方法或其他方法中的变量。 - 每个实例有自己独立的实例变量。
class MyClass:
def __init__(self, value):
self.instance_variable = value
受保护变量和方法
使用单下划线(Protected)
- 以单下划线
_
开头的变量和方法被认为是受保护的,约定上不建议在类外部直接访问。