一、私有属性和方法
在属性和方法的名称前加上双下划线
即可。
可以看到在实例中无法查看到类中定义的私有属性和方法。
二、静态类
可以创建实例的类叫做动态类,不支持实例化的类叫做静态类。
静态类的特点:
- 静态类内部没有self关键字,不能被实例化
- 静态类不能通过类名传递参数
- 静态类不支持__init__()初始化函数
可以理解为一些变量和方法的集合。直接通过类名来调用方法和变量
三、静态属性、类属性、成员属性
类属性与静态属性是同一个概念,在类级别定义的属性,不依赖于实例。
name = "Bob" # 可以叫静态属性,也可以叫类属性
self.name = "Bob" # 带有self的
四、静态方法、类方法、成员方法
def static_method(): # 1.类中不带self,cls的可以被当作静态方法
print("my name is " + MyClass.name +"and my age is " + str(MyClass.age))
@staticmethod # 使用 @staticmethod 装饰器定义,不依赖于实例,不需要 self 参数。
def static_method2():
print("I am a static method")
@classmethod # 使用 @classmethod 装饰器定义,不依赖于实例,第一个参数是类本身(通常命名为 cls)。
def class_method(cls):
print("I am a class method and my name is " + cls.name)
def public_method(self): # 方法带self的为成员方法
print("My name is " + self.name + " and my age is " + str(self.age) + " and my favorite color is " +
self.favorite_color)
静态方法与类方法的区别
- 静态方法不需要隐含参数,类方法需要cls。
- 静态方法不能访问实例属性或方法,也不能访问类属性或方法(除非通过类名显式访问)。
- 静态方法用于定义与类相关但不依赖于实例的操作,例如工具函数。类方法用于定义与类相关且需要访问类属性的操作,例如工厂方法。
五、综合示例
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END