• 类成员的进一步阐述


    class Foo:
        #类变量(静态字段)
        country = "中国"
        
        def  _init_(self,name)
            实例变量(字段)
            self.name = name
            
        def func(self):
            pass
    
    #知识点一:
    '''
    准则:
        实例变量(字段)访问时,使用对象访问,既:obj1.name
            类变量(静态变量)访问时,推荐使用类方法,既:Foo.country (实在不行,才使用对象)
            
    
    obj1 = Foo('李光辉')
    obn2 = Foo("王岗")
    print(obj1,name)
    print(Foo.country)  
    
    # 知识点一:易错点
    """
    obj1 = Foo('季红')
    obj2 = Foo('王晓东')
    
    # 练习1
    # obj1.name = 'alex'
    # print(obj1.name) # alex
    # print(obj2.name) # 王晓东
    
    # 练习2
    # obj1.country = '美国'
    # print(obj1.country) # 美国
    # print(obj2.country) # 中国
    
    # 练习3
    # Foo.country = '美国'
    # print(obj1.country) # 美国
    # print(obj2.country) # 美国
    """
    
    
    # 知识点一: 什么时候用类变量?
    # 当所有对象中有共同的字段时且要改都改要删都删时,可以将 实例变量(字段) 提取到 类变量(静态字段)
    
    '''
    # ######################## 公有实例变量(字段) ########################
    class Foo:
    
        def __init__(self, name):
            self.name = name
            self.age = 23
    
        def func(self):
            print(self.name)
    
    obj = Foo("张娜拉")
    print(obj.name)
    print(obj.age)
    obj.func()
    张娜拉
    23
    张娜拉
    
    class Foo:
    
        def __init__(self, name):
            self.__name = name
            self.age = 22
    
        def func(self):
            print(self.__name)
    
    obj = Foo("杰森斯坦森")
    print(obj.age)
    obj.func()
    22
    杰森斯坦森'''
    # ######################## 类变量(静态字段) ########################
    """
    class Foo:
        country = "中国"
    
        def __init__(self):
            pass
    
        def func(self):
            # 内部调用
            print(self.country)
            print(Foo.country) # 推荐
    
    
    # 外部调用
    print(Foo.country)
    
    obj = Foo()
    obj.func()
    """
    
    # ######################## 私有类变量(私有静态字段) ########################
    """
    class Foo:
        __country = "中国"
    
        def __init__(self):
            pass
    
        def func(self):
            # 内部调用
            print(self.__country)
            print(Foo.__country)  # 推荐
    
    # 外部无法调用私有类变量
    # print(Foo.country)
    
    obj = Foo()
    obj.func()
    '''
    '''
    class Base():
        _secret = "做一些不可描述的事情"
    
        def zt(self):
            pass
            # print(Base._secret)
    
    class Foo(Base):
    
         def func(self):
             print(self._secret)
             print(Foo._secret)
    
    obj = Foo()
    obj.zt()
    '''
    
    class Foo(object):
        def __init__(self, name):
            self.name = name
    
            #实例方法
        def func(self):
            print(self.name)
    
    
            #静态方法,如果方法无需使用队形中封装的值,name可以使用静态方法
        @staticmethod
        def display(a1, a2):
            return a1 + a2
    
    obj = Foo(" 蒙娜丽莎的微笑")
    obj.func()
    
    ret = Foo.display(1, 3)
    print(ret)
    蒙娜丽莎的微笑
    4
    
    总结
        1. 编写时:
            - 方法上分写 @staticmethod
            _方法参数可有可无
        2. 调用时:
            - 类.方法名() ***
            - 对象.方法名()
        3. 什么时候写静态方法?
             - 无需调用对象中已封装的值,那么就可以使用静态方法
    
    
    
    class  Foo(object):
        def __init__(self, name):
            self.name = name
    
    
        def  func(self):
            print(self.name)
    
        @staticmethod
        def display(a1,a2):
            return  a1 + a2
    
        @classmethod
        def show(cls, x1, x2):
            print(cls, x1, x2)
    Foo.show(1, 8)
    print(Foo.display(1, 3))
    执行类方法
    
    总结
        1.定义时:
            - 方法上方写: @classmethod
            - 方法的参数: 至少有一个cls参数
        2.执行时:
            -类名,方法名() #默认会将当前类传到参数中.
        3.什么时候用?
            -如果在方法中会使用到当前类,那么就是用类方法
    '''
  • 相关阅读:
    Array方面Js底层代码学习记录
    DOM 节点
    跨域
    狂雨cms代码审计:后台文件包含getshell
    在PHP一句话木马使用过程中的种种坑点分析
    记对某CMS的一次代码审计
    通达OA任意文件上传并利用文件包含导致远程代码执行漏洞分析
    DedeCMS V5.7 SP2后台存在代码执行漏洞
    zzzcms(php) v1.7.5 前台SQL注入及其他
    权限维持及后门持久化技巧总结
  • 原文地址:https://www.cnblogs.com/zzy7372/p/9549852.html
Copyright © 2020-2023  润新知