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
    
  • 相关阅读:
    0309. Best Time to Buy and Sell Stock with Cooldown (M)
    0621. Task Scheduler (M)
    0106. Construct Binary Tree from Inorder and Postorder Traversal (M)
    0258. Add Digits (E)
    0154. Find Minimum in Rotated Sorted Array II (H)
    0797. All Paths From Source to Target (M)
    0260. Single Number III (M)
    0072. Edit Distance (H)
    0103. Binary Tree Zigzag Level Order Traversal (M)
    0312. Burst Balloons (H)
  • 原文地址:https://www.cnblogs.com/ArticleYeung/p/10460401.html
Copyright © 2011-2022 走看看