二十三、面向对象4—类属性、实例属性、类方法、实例方法、静态方法

一、类属性

1、类的属性有两种用法:一种是实例的名.类属性名,另外一种是类的名字.类属性名

2、目前为止我们所学过的,只要是私有的,只能在类的里面使用,不能在类的外面去使用,也不能被继承下来,也就是说不能在子类中使用私有的。

二、实例属性

1、实例属性不是必须在类中显示定义的,然后才可以使用的。

在类外对类对象people进行实例化之后,产生了一个实例对象p,然后p.age = 12这句给p添加了一个实例属性age,赋值为12。这个实例属性是实例对象p所特有的,注意,类对象people并不拥有它(所以不能通过类对象来访问这个age属性)。当然还可以在实例化对象的时候给age赋值。

三、总结必看

1、类属性

2、实例属性

四、实例方法、类方法

(1)类方法

1、是类对象所拥有的方法,需要用修饰器@classmethod来标识其为类方法,对于类方法,第一个参数必须是类对象,一般以cls作为第一个参数

2、我们知道self保存的是这个实例对象:那cls保存的是这个类也就是class的简写

1、可以通过类的名字调用类方法,也可以通过这个类创建出来的对象去调用这个类方法。

2、类方法还有一个用途就是可以对类属性进行修改。

3、结果显示在用类方法对类属性修改之后,通过类对象和实例对象访问都发生了改变。

(2)实例方法,就是普通的方法

五、静态方法

1、需要通过修饰器@staticmethod来进行修饰,静态方法不需要多定义参数

2、跟类方法与实例的方法区别就是可以没有必须要写的那个self和cls的参数。

六、总结必看

1、从类方法和实例方法以及静态方法的定义形式就可以看出来,类方法的第一个参数是类对象cls,那么通过cls引用的必定是类

     对象的属性和方法;

2、而实例方法的第一个参数是实例对象self,那么通过self引用的可能是类属性、也有可能是实例属性(这个需要具体分析),

     不过在存在相同名称的类属性和实例属性的情况下,实例属性优先级更高

3、静态方法中不需要额外定义参数,因此在静态方法中引用类属性的话,必须通过类对象来引用。

 

猜你喜欢

转载自blog.csdn.net/xk1761299425/article/details/81366703