python类属性和实例属性

对于类属性和实例属性,如果在类方法中引用某个属性,则属性必是类属性,而如果在实例方法中
引用某个属性(不作更改),并且存在同名的类属性,此时若实例对象有该名称的实例属性,则实例属性会
屏蔽类属性,即引用的是实例属性。若实例对象没有该名称的实例属性,则引用的是类属性
如果在实例方法更改某个属性,并且存在同名的类属性,此时若实例对象有该名称的实例属性,则修改的是实例属性,若实例
对象没有该名称的实例属性,则会创建一个同名称的实例属性。相应修改类属性,如果在类外,可以通过类对象修改,如果在类里面,只有

类方法中可以进行修改。

class Hourse():
	height=30;#类属性
	width=30;
	def __init__(self,length):
		self.length=length;#实例属性、对象属性
		self.weight=100

hou1=Hourse()
hour2=Hourse()
hour1.weight=200
hour1.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=value

	def setWigth(self,value):#实例方法
		self.weight=value

	@staticmethod #静态方法,可以没有参数,必须有关键字@staticmethod
	def changeHeight(value):
		self.height=value

	@classmethod
	def creatNumHourse(cls,number):
		templist=[]
		i=0
		while number-i>0 :		
			templist.append(Hourse(3.5))
			i+=1
		
		return templist

Hourse.height=50 #类的属性修改为50
hour1=Hourse(2)
hour2=Hourse(3)
print(hour1.height,hour2.height)#50,50
Hourse.setHeight(32.2) #通过类对象,调用类方法
print(hour1.height,hour2.height)#32.2 32.2
hour2.setHeight(33) #通过对象实例,可以调用类方法
print(hour1.height,hour2.height)#33,33
hour1.weight=200
hour1.height=40 #修改成功height=40,如果通过对象取修改类属性,python会自动给这个对象创建一个和类属性相同名字的实例属性,当删除之后,仍可以用类原来的属性
print(hour1.height,hour2.height)  #40 ,33
del hour1.height #删除后 height=30;
print(hour1.height,hour2.height) #33, 33
#不可以用类对象调用实例方法
##但是可以通过类对象调用静态方法 
#通过实例对象可以调用实例方法
HourList=hour1.creatNumHourse(3)
print(len(HourList)) #3
HourseList=hour2.creatNumHourse(4)
print(len(HourseList))#4
HourL=Hourse.creatNumHourse(5)
print(len(HourL))#5
#将方法封成实例化,把创建对象放到类方法中:类方法或者静态方法





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值