zoukankan      html  css  js  c++  java
  • 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
    
  • 相关阅读:
    word批量打印工具,c#写的
    word添加页眉脚和设置各页不同的页眉页脚.
    打印机双面打印
    ORACLE OCP认证
    基于.net程序,使用cefsharp开发的打开网页工具,如何不加载图片
    在iis上运行的服务器端程序,运行一段时间后,访问都只出现一行乱码,回收进程池后又好了,求大神回复
    ArcGis API for JavaScript 开发笔记一 加载地图
    修改现有消息类让.net core项目支持Protobuf
    结合现有分布式系统的数据一致性思考
    让现有vue前端项目快速支持多语言
  • 原文地址:https://www.cnblogs.com/ArticleYeung/p/10460401.html
Copyright © 2011-2022 走看看