美文网首页
Python 类属性、实例属性、类方法、实例方法

Python 类属性、实例属性、类方法、实例方法

作者: 又绿江南岸1990 | 来源:发表于2019-08-12 14:59 被阅读0次

1、实例属性

实例属性,就是赋给由类创建的实例的属性,实例属性属于它所属的实例,不同实例之间的实例属性可以不同。

例:设置实例属性

设置实例属性 抛出属性异常

由于p2实例中没有设置过name属性,因此当Python解释器执行到这行代码时,会抛出属性错误异常。由此可以看出,每个实例之间的属性是分别独立的,属性之间不能共享。

例:通过__init__()方法设置实例属性

调用__init__()方法 设置属性

当创建实例时,会自动调用__init__()方法,通过该方法为属性赋值。

通过上述方式设置的实例属性都可以被外部访问,但是在实际开发中,可能一些属性不需要被外部访问,就需要控制实例属性的访问权限。

Python中,属性的访问权限是由属性名控制的,如果一个属性由双下划线(__)开头,该属性就无法被外部访问。如果外部需要访问这种变量,可以通过特定的实例方法来访问。

例:属性访问控制权限

为属性设置访问权限

因为__address属性外部无法访问,因此Python解释器执行到这段代码时,会抛出属性错误异常。

2、类属性

在类中直接定义的属性被称之为类属性,与实例属性不同的是,类属性会在所有的实例对象中共享。类属性有且只有1份,创建的实例都会继承自唯一的类属性,如果在类上绑定一个属性,那么所有的实例都可以访问类属性,且访问的类属性是同一个,一旦类属性改变就会影响到所有的实例。

例:设置类属性

设置类属性

类属性在实例之间共享,因此类创建的实例都可以访问到类属性。

例:实例对象修改类属性

实例对象修改类属性 内存分析图

3、实例属性与类属性重名

例:当实例属性与类属性重名时,实例属性优先级更高

实例属性与类属性重名 实例属性优先级更高

4、实例方法

在类中,定义的普通方法都是实例方法。实例方法隐含的参数为类实例self。实例方法只能被实例调用。

例:定义实例方法

定义实例方法

例:类对象调用实例方法

5、类方法

Python中,再类中定义类方法,需要在方法上加上@classmethod装饰器,同时方法中传入cls作为参数,代表当前的类对象,类方法中,可以访问当前类中的类属性,但是不能访问实例属性。

定义类方法,通过实例调用类方法 定义类方法,通过类对象调用类方法 类方法中调用实例属性

6、静态方法

例:定义静态方法

定义静态方法

静态方法可以通过实例对象调用,也可以通过类对象调用。

例:静态方法访问类属性与实例属性

静态方法访问类属性与实例属性

总结

实例方法(普通方法)———————————————————————  随着实例属性的改变而改变

类方法(无论是类调用还是实例调用)———————————————  都是类属性的值,不随实例属性的变化而变化

静态方法 ——————————————————————————————  不可以访问类属性,故直接输出传入方法的值

相关文章

  • 类方法 VS 静态方法

    类对象、实例对象、类属性、实例属性、类方法、实例方法、静态方法。 @staticmethod@classmetho...

  • 30-类属性、实例属性

    类属性、实例属性 实例方法、类方法、静态方法

  • runtime(一)

    总结:Classget 类名,父类;实例变量;属性;实例方法,类方法,方法实现;Copy 实例变量列表;属性列...

  • JS实例属性/方法、静态属性/方法、私有属性/方法、原型属性/方

    实例属性/方法 & 静态属性/方法 实例属性/实例方法通过对象调用 静态属性/静态方法用类名直接调用 私有属性/方...

  • python 类属性和类方法

    类属性和类方法 目标 类的结构 类属性和实例属性 类方法和静态方法 01. 类的结构 1.1 术语 —— 实例 使...

  • 实例属性和类属性

    实例属性和类属性: 由于Python是动态语言,根据类创建的实例可以任意绑定属性。 (1)给实例绑定属性的方法是通...

  • Python 类属性、实例属性、类方法、实例方法

    1、实例属性 实例属性,就是赋给由类创建的实例的属性,实例属性属于它所属的实例,不同实例之间的实例属性可以不同。 ...

  • Python面向对象编程

    类相关知识 对象相关知识 类属性增删改查 实例属性增删改查 对象与实例属性 静态属性 类方法 静态方法 组合 继承...

  • typescript入门-类

    类定义 class 实例化 new 实例属性、方法 继承 extends 静态属性、方法 使用 static 前置...

  • 面向对象编程

    主要包括: 基本概念 属性私有化(类的封装) 实例属性与类属性 静态方法、类方法、与实例方法 继承与多态 获取对象...

网友评论

      本文标题:Python 类属性、实例属性、类方法、实例方法

      本文链接:https://www.haomeiwen.com/subject/ywxujctx.html