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的派生类)的派生类
这是类

原文地址:https://www.cnblogs.com/SkyRabbit/p/11321929.html