• Python学习 :面向对象 -- 类的成员


    类的成员

    一、字段

    - 字段可以分为'普通字段'和'静态字段'两种

    - 普通字段(保存在对象中,执行时只能通过对象来进行访问)

    - 静态字段(保存在类中,在内存中只保存一份数据(可以有效地节约内存的空间),执行时可以通过对象来访问,也可以通过类来访问)

    class Province:
        country = '中国'  # 静态字段
    
        def __init__(self, name):
            self.name = name  # 普通字段
    
        def show(self):  # 方法
            print(self.name)
    
    
    Beijing = Province('北京')
    Shanghai= Province('上海')
    print(Beijing.name, Province.country)  # 通过类来访问静态对象country
    print(Shanghai.name,Shanghai.country)  # 通过对象来访问静态对象country
    ===>北京 中国
    ===>上海 中国

    二、方法

    - 方法可以分为三种'普通方法'、'静态方法'以及'类方法'三种

    - 普通方法,保存在类中,通过对象来调用,self参数为对象

    - 静态方法,保存在类中,通过类来直接调用

      静态方法的特殊之处:1、self 参数不再是必须的

                2、在方法前加上装饰器 @staticmethod

                3、也可以传入对应的参数

    - 类方法,    保存在类中,通过类来直接调用,cls参数为类

      类方法的特殊之处:    1、需要参数,一般使用为 cls

                 2、在方法前加上装饰器 @classmethod

    应用场景:

    - 当对象中需要保存值,调用方法时需要使用对象中的值,此时使用普通方法更为合适

    - 当不需要任何对象中的值时,使用静态方法或类方法比较合适

    class Method:
        # 普通方法
        def nml(self):
            print('普通方法')
    
        # 静态方法
        @staticmethod
        def stm():
            print('静态方法')
    
        # 类方法
        @classmethod
        def cls(cls):
            # 一般在类方法中的参数为cls ,cls 是类名
            print('类方法')
    
    Method.stm()
    Method.cls()
    ===>静态方法
    ===>类方法

    三、属性(特性)

    属性,保存在类中

    class Info:
        @property
        def med1(self):
            print('med1')
    
        def med2(self):
            print('med2')
        def med3(self,v):
            print(v)
        def med4(self):
            print('med4')
    
        per = property(fget=med2,fset=med3,fdel=med4)
    
    obj = Info()
    obj.med1
    ret = obj.per       # fget的访问方式
    obj.per = 'med3'    # fset的访问方式
    del obj.per         # fdel的访问方式
    ===>med1
    ===>med2
    ===>med3
    ===>med4
    
  • 相关阅读:
    Docker简介,安装,配置
    Centos7给 root 账户开通ssh权限
    [转载]Hyper-v 安装CentOS 7
    软件开发_六大原则
    php函数名后冒号(:)+数据类型(返回值类型限制/php新特性)
    MySQL--事务介绍
    MySQL存储引擎
    leetcode刷题笔记300题 最长上升子序列
    leetcode刷题笔记299题 猜数字游戏
    **leetcode刷题笔记四 两个有序序列的中位数**
  • 原文地址:https://www.cnblogs.com/ArticleYeung/p/10460401.html
Copyright © 2020-2023  润新知