• python note 22 面向对象成员


    1、变量

    变量:
        - 实例变量(字段) 
            - 公有实例变量(字段) 
            - 私有实例变量(字段) 
        - 类变量(静态字段)
            - 公有类变量(静态字段)
            - 私有类变量(静态字段)

    实例一:

    class Foo:
        # 类变量(静态字段)
        country = "中国"
    
        def __init__(self, name):
            # 实例变量(字段)
            self.name = name
    
        def func(self):
            pass
    
    
    obj1 = Foo('季红')
    obj2 = Foo('王晓东')
    
    Foo.country

    2、方法

    实例方法
    class Foo(object):
        def __init__(self, name):
            self.name = name
    
        # 实例方法
        def func(self):
            print(self.name)
    
    obj = Foo('..')
    obj.func()
    
    - 静态方法
    class Foo(object):
        def __init__(self, name):
            self.name = name
    
        # 静态方法,如果方法无需使用对象中封装的值,那么就可以使用静态方法
        @staticmethod
        def display(a1, a2):
            return a1 + a2
    
    Foo.display(1, 3)
    
    - 类方法
    class Foo(object):
        # 类方法,cls是类
        @classmethod
        def show(cls, x1, x2):
            print(cls, x1, x2)
    
    # 执行类方法
    Foo.show(1, 8)

    总结

    # ############### 静态方法 ##############
    #   1. 编写时:
    #        - 方法上方写 @staticmethod
    #        - 方法参数可有可无
    #   2. 调用时:
    #       - 类.方法名()  *
    #       - 对象.方法名()
    #   3. 什么时写静态方法?
    #       - 无需调用对象中已封装的值.
    
    # ############### 类方法 ##############
    #   1. 定义时:
    #        - 方法上方写: @classmethod
    #        - 方法的参数: 至少有一个cls参数
    #   2. 执行时:
    #        - 类名.方法名()  # 默认会将当前类传到参数中.
    #   3. 什么时用?
    #        - 如果在方法中会使用到当前类,那么就可以使用类方法.

    3、属性

     总结:
    1. 编写时
     - 方法上方写 @property
     - 方法参数:只有一个self
    2. 调用时:无需加括号  对象.方法
    3. 应用场景: 对于简单的方法,当无需传参且有返回值时,可以使用 @property

    4、嵌套

    面向对象:
    """
    创建三个学校且三个学校的设施内容等都是一致.
    """
    class School(object):
        def __init__(self, name, address):
            self.name = name
            self.address = address
    
        def speech(self):
            print('讲课')
    
    obj1 = School('老男孩北京校区', '美丽富饶的沙河')
    obj2 = School('老男孩上海校区', '浦东新区')
    obj3 = School('老男孩深圳校区', '南山区')
    
    
    class Teacher(object):
        def __init__(self, name, age, salary):
            self.name = name
            self.age = age
            self.__salary = salary
            self.school = None
    
    t1 = Teacher('李杰', 19, 188888)
    t2 = Teacher('艳涛', 18, 60)
    t3 = Teacher('女神', 16, 900000)
    # ############## 老师分配校区
    t1.school = obj1
    t2.school = obj1
    t3.school = obj2
    # ####################################
    # 查看t1老师,所在的校区名称/地址
    print(t1.school.name)
    print(t1.school.address)
    print(t1.name)
    print(t1.age)
    t1.school.speech()
    
    准则: 字段和方法的归类.
    
    以前:
    [
        {"name": 'alex1', 'age': 18, xxx: 999},
        {"name": 'alex2', age':18},
    ]
  • 相关阅读:
    怎么用一句话把一个集合的属性值根据条件改了,而其他值不变
    【算法导论学习笔记】第3章:函数的增长
    【算法导论学习笔记】第2章:算法基础
    【算法导论学习笔记】第1章:算法在计算中的作用
    【Python爬虫学习笔记(3)】Beautiful Soup库相关知识点总结
    【Python爬虫学习笔记(2)】正则表达式(re模块)相关知识点总结
    【Python爬虫学习笔记(1)】urllib2库相关知识点总结
    string类型转换JSONObjec类型,并取出对应的值
    mybatis的Example的使用
    github上传项目
  • 原文地址:https://www.cnblogs.com/P-Z-W/p/11010506.html
Copyright © 2020-2023  润新知