热心市民小叮当

xiaodingdang 互联网
6099 号测试 成员, 2022-07-21 08:32:31 加入
1.4k
个人主页浏览
76h26m
在线时长
测不完,根本测不完。
  • Python 实力方法、类方法、静态方法、私有方法

    2023-07-03 15:06

    你的七、私有方法 3、特点写的不对,Python中的私有方法可以被继承,但不能被直接访问或调用。

    私有方法和属性只能在类内部被访问和调用,而在类外部无法直接访问。但是,在子类中可以继承父类的私有方法,而且可以通过调用其他非私有方法或公有方法来访问和间接调用父类的私有方法。

    class Parent:
        def __private_method(self):
            print("This is a private method.")
          
        def public_method(self):
            print("This is a public method.")
            self.__private_method()
          
    class Child(Parent):
        def call_private_method(self):
            self.__private_method()  # 无法直接调用
      
    child = Child()
    child.public_method()  # 输出 "This is a public method." 和 "This is a private method."
    child.call_private_method()  # 报错:AttributeError: 'Child' object has no attribute '__private_method'
    
  • Python 实力方法、类方法、静态方法、私有方法

    2023-07-03 15:01

    你的六、静态方法 3、特点写错了。

    静态方法可以访问类相关的属性和方法,但是不能访问实例的相关属性和方法,因为静态方法与类的实例状态无关。

    class MyClass:
        class_var = 10
      
        def __init__(self, instance_var):
            self.instance_var = instance_var
      
        @staticmethod
        def static_method():
            print(MyClass.class_var)  # 调用类属性
            MyClass.class_method()  # 调用类方法
      
        @classmethod
        def class_method(cls):
            print("This is a class method.")
      
    my_instance = MyClass(20)
    MyClass.static_method()  # 输出 "10" 和 "This is a class method."
    my_instance.static_method()  # 输出 "10" 和 "This is a class method."