编程语言
首页 > 编程语言> > python 面向对象专题(五):私有成员、类方法、静态方法、属性、isinstance/issubclass

python 面向对象专题(五):私有成员、类方法、静态方法、属性、isinstance/issubclass

作者:互联网

https://www.cnblogs.com/liubing8/p/11325421.html

目录

 

1. 私有成员

  1. 私有类的属性:在内部可以访问(本类内部方法中),类的外部不能访问

    代码示例:

    # 在内部可以访问(本类内部方法中)
    class A:
        name = '张三'
        __name = '李四'  # 私有类的属性
        def func(self):
            print(self.name)
            print(self.__name)
    obj = A()
    obj.func()
    
    # 类的外部不能访问
    class A:
        name = '张三'
        __name = '李四'  # 私有类的属性
        def func(self):
            pass
    obj = A()
    print(obj.name)
    print(A.__name)   # 报错
    print(obj.__name)  # 报错

     

  2. 私有对象属性:只能在类的内部使用,不能在外部及派生类中使用

    代码示例:

    class A:
        name = '张三'
        __name = '李四'
    
    class B(A):
        def func(self):
            print(self.__name)
    
    obj = B()
    print(obj.__name)   # 不可以
    obj.func()   # 不可以

     

  3. 私有类的方法:只能在类的内部使用,不能在外部及派生类中使用

    代码示例:

    class A:
    
        def func(self):
            self.__func()
            print('in A func')
    
        def __func(self):
            print('in A __func')
    
    obj = A()
    obj.func()   # 可以
    obj.__func()   # 不可以

     

  4. 对于私有类成员来说:当你遇到重要的数据/功能,(只允许本类使用的一些方法,数据)设置成私有成员
  5. Python中所有私有成员都是纸老虎,形同虚设,类在加载时,只要遇到类中的私有成员,都会在私有成员前面加上_类名

    代码示例:

    class A:
    
        name = '张三'
        __name = '李四'  # 私有类的属性
    
        def __func(self):
            print('in __func')
    
    print(A.__dict__)
    print(A._A__name)

     

2. 类方法

方法包括:普通方法、静态方法和类方法,三种方法在内存中都归属于类,区别在于调用方式不同。

3. 静态方法

4. 属性

5. 内置函数 isinstance issubclass

6. 总结:

  1. 对象如果改变了类的静态属性, 具体他进行了什么操作?
    将类中的静态属性变成可变的数据类型.
    对象调用类的方法,方法中对类的属性进行改变.

  2. 对象不能修改类的属性,示例代码如下:

    class A:
        a = 1
        b = 2
        def __init__(self):
            c = 3
    obj1 = A()
    obj2 = A()
    obj1.a = 3
    obj2.b = obj2.b + 3
    
    print(A.a)  #1
    print(obj1.b)  #2
    print(obj2.b)  #5
    print(obj2.c)   #报错

     

标签:静态方法,name,python,self,bmi,issubclass,print,obj,def
来源: https://www.cnblogs.com/qiu-hua/p/12862238.html