zoukankan      html  css  js  c++  java
  • python面向对象(4)_细分类的组成成员

    类的组成成员

    1.静态变量
    2.私有静态变量
    写法如下:

    __SkyRabbit="SkyRabbit"
    

    3.特殊方法
    写法如下:

    def __init__(self,name,age): #特殊方法
            self.name = name  #对象属性(普通字段)
            self.__age = age  # 私有对象属性(私有普通字段)
    

    4.普通方法
    写法如下:

    def func1(self):  # 普通方法
            pass
    

    5.私有方法
    写法如下:

    def __func(self): #私有方法
            print(666)
    

    6.类方法
    写法如下:

    @classmethod  # 类方法
    def class_func(cls):
            """ 定义类方法,至少有一个cls参数 """
            print('类方法')
    

    7.静态方法
    写法如下:

    @staticmethod  #静态方法
    def static_func():
            """ 定义静态方法 ,无默认参数"""
            print('静态方法')
    

    8.属性
    写法如下

    @property  # 属性
    def prop(self):
            pass
    

    类的私有成员

    对于每一个类的成员而言都有两种形式:
    公有成员,在任何地方都能访问
    私有成员,只有在类的内部才能方法

    私有成员和公有成员的访问限制不同:
    静态字段(静态属性)
    公有静态字段:类可以访问;类内部可以访问;派生类中可以访问
    私有静态字段:仅类内部可以访问;

    普通字段(对象属性)
    公有普通字段:对象可以访问;类内部可以访问;派生类中可以访问
    私有普通字段:仅类内部可以访问;

    方法:
    公有方法:对象可以访问;类内部可以访问;派生类中可以访问
    私有方法:仅类内部可以访问;

    私有成员,只能在类的内部使用,不能再类的外部以及派生类中使用.

    类的其他成员

    方法包括:普通方法、静态方法和类方法,三种方法在内存中都归属于类,区别在于调用方式不同。
    实例方法
    定义:第一个参数必须是实例对象,该参数名一般约定为“self”,通过它来传递实例的属性和方法(也可以传类的属性和方法);
    调用:只能由实例对象调用。
    类方法
    定义:使用装饰器@classmethod。第一个参数必须是当前类对象,该参数名一般约定为“cls”,通过它来传递类的属性和方法(不能传实例的属性和方法);
    调用:实例对象和类对象都可以调用。
    静态方法
    定义:使用装饰器@staticmethod。参数随意,没有“self”和“cls”参数,但是方法体中不能使用类或实例的任何属性和方法;
    调用:实例对象和类对象都可以调用。
    双下方法(后面会讲到)
     定义:双下方法是特殊方法,他是解释器提供的 由爽下划线加方法名加爽下划线 __方法名__的具有特殊意义的方法,双下方法主要是python源码程序员使用的, 

    调用:不同的双下方法有不同的触发方式,就好比盗墓时触发的机关一样,不知不觉就触发了双下方法,例如:init

    类方法

    使用装饰器@classmethod

    静态方法

    使用装饰器@staticmethod。

    属性

    @property
    将一个类的函数定义成特性以后,对象再去使用的时候obj.name,根本无法察觉自己的name是执行了一个函数然后计算出来的,这种特性的使用方式遵循了统一访问的原则
    由于新式类中具有三种访问方式,我们可以根据他们几个属性的访问特点,分别将三个方法定义为对同一个属性:获取、修改、删除

    class Foo:
    #获取
    @property
    def AAA(self):
            print('get的时候运行我啊')
    #修改
    @AAA.setter
    def AAA(self,value):
            print('set的时候运行我啊')
    #删除
    @AAA.deleter
    def AAA(self):
            print('delete的时候运行我啊')
    

    isinstace 与 issubclass

    isinstance(a,b):判断a是否是b类(或者b类的派生类)实例化的对象
    这是对象
    issubclass(a,b): 判断a类是否是b类(或者b的派生类)的派生类
    这是类

  • 相关阅读:
    IDEA中用jetty启动项目时,url 404
    Mysql 性能查询
    RabbitMQ 安装
    Ubuntu安装kubernetes
    .net 4 调用WCF时报错 Type 'System.Threading.Tasks.Task`1[]' cannot be serialized
    Windows XP SP2上安装.net 4
    angular学习的一些Mark
    [转]对 td 使用 overflow:hidden; 无效的几点错误认识
    静态方法与非静态方法的区别
    二进制字符串的权限管理
  • 原文地址:https://www.cnblogs.com/SkyRabbit/p/11321929.html
Copyright © 2011-2022 走看看