python类的属性怎么定义,python 类的属性

  python类的属性怎么定义,python 类的属性

  为了更好地解释类属性和对象属性之间的区别,首先创建类People和两个对象student1和student2,如下所示:

  类人(对象):

  # Class attribute指的是在类内部和方法外部定义的属性。

  钱=10000

  def __init__(本人,姓名,年龄,性别=1):

  # Object attribute是指在方法内部定义的属性,如本例所示。

  #姓名、年龄、性别都是对象属性。

  self.name=name

  年龄=年龄

  self.gender=性别

  #创建两个类的对象

  student1=People(xfdjr ,20)

  Student2=People(清秀的莉莉,25岁)

  类别属性和对象属性之间的区别:

  # Objects可以通过对象名调用对象属性和类属性。属性名称。

  打印(学生2 .姓名)

  print(student2.money)

  #而且类还可以通过类名调用类的属性。属性名,但是

  #不能以这种方式调用对象的属性

  #例如,如果一个类调用name属性,它将报告一个异常。

  # AttributeError:类型对象“People”没有属性“name”

  打印(People.money)

  打印(People.name)

  结果如下:

  使用中类属性和对象属性的区别:

  #在操作之前,所有三个引用都是类属性money。

  #所以这三笔钱的内存地址都是一样的

  打印(id(student1.money))

  打印(id(student2.money))

  打印(id(People.money)

  结果如下:

  #执行以下操作

  学生1 .钱-=1000

  人.钱-=1000

  #再次打印三者的内存地址。

  打印(id(student1.money))

  打印(id(student2.money))

  打印(id(People.money))

  再看看结果:

  您会发现student1引用的money属性的内存地址与其他两个不同,但其他两个的内存地址仍然相同,原因如下:

  表达式student1.money -=1000后,过程如下:第一次引用money属性时,过程如下:首先我们会找出对象中是否有money属性;如果有,我们就直接计算;如果没有,我们就去上课了解是否有金钱属性;如果我们在类中找到了money属性,那么student1会创建一个对象属性money,第二次调用时,会调用自己的对象属性,而不是类People中的属性。但是student2不会创建自己的money属性,而是引用类People的属性,所以student2和People引用的是同一个属性。

  #当student2做同样的操作时,也会在student2中创建一个money属性。

  #此时,三者的货币属性的内存地址都不同。

  钱=1000

  打印(id(student1.money))

  打印(id(student2.money))

  打印(id(People.money))

  结果如下:

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: