python类属性和实例属性

来源:互联网 发布:java后端转前端 编辑:程序博客网 时间:2024/05/22 08:11
对于类属性和实例属性,如果在类方法中引用某个属性,则属性必是类属性,而如果在实例方法中
引用某个属性(不作更改),并且存在同名的类属性,此时若实例对象有该名称的实例属性,则实例属性会
屏蔽类属性,即引用的是实例属性。若实例对象没有该名称的实例属性,则引用的是类属性
如果在实例方法更改某个属性,并且存在同名的类属性,此时若实例对象有该名称的实例属性,则修改的是实例属性,若实例
对象没有该名称的实例属性,则会创建一个同名称的实例属性。相应修改类属性,如果在类外,可以通过类对象修改,如果在类里面,只有

类方法中可以进行修改。

class Hourse():height=30;#类属性width=30;def __init__(self,length):self.length=length;#实例属性、对象属性self.weight=100hou1=Hourse()hour2=Hourse()hour1.weight=200hour1.height=40 #修改成功height=40,如果通过对象取修改类属性,python会自动给这个对象创建一个和类属性相同名字的实例属性,当删除之后,仍可以用类原来的属性del hour1.height #删除后 height=30

类方法、静态方法、类对象方法,学会利用类方法或者静态方法创建多个类对象

class Hourse():height=30;#类属性width=30;def __init__(self,length):self.length=length;#实例属性、对象属性self.weight=100#关键字@classmethod@classmethod #类方法的书写方式,通过类方法修改类属性def setHeight(cls,value):cls.height=valuedef setWigth(self,value):#实例方法self.weight=value@staticmethod #静态方法,可以没有参数,必须有关键字@staticmethoddef changeHeight(value):self.height=value@classmethoddef creatNumHourse(cls,number):templist=[]i=0while number-i>0 :templist.append(Hourse(3.5))i+=1return templistHourse.height=50 #类的属性修改为50hour1=Hourse(2)hour2=Hourse(3)print(hour1.height,hour2.height)#50,50Hourse.setHeight(32.2) #通过类对象,调用类方法print(hour1.height,hour2.height)#32.2 32.2hour2.setHeight(33) #通过对象实例,可以调用类方法print(hour1.height,hour2.height)#33,33hour1.weight=200hour1.height=40 #修改成功height=40,如果通过对象取修改类属性,python会自动给这个对象创建一个和类属性相同名字的实例属性,当删除之后,仍可以用类原来的属性print(hour1.height,hour2.height)  #40 ,33del hour1.height #删除后 height=30;print(hour1.height,hour2.height) #33, 33#不可以用类对象调用实例方法##但是可以通过类对象调用静态方法 #通过实例对象可以调用实例方法HourList=hour1.creatNumHourse(3)print(len(HourList)) #3HourseList=hour2.creatNumHourse(4)print(len(HourseList))#4HourL=Hourse.creatNumHourse(5)print(len(HourL))#5#将方法封成实例化,把创建对象放到类方法中:类方法或者静态方法





原创粉丝点击