经过研究个人总结如下,如有不对欢迎留言讨论: 1、类方法,用来管理类属性,类和实例都可以访问,调用返回值没有区别 2、实例方法,用来管理实例属性,实例访问 3、静态方法,用来作为类里面的工具箱,类和实例都可以访问 另外 1.类属性只有通过类名.属性名来修改,并且会影响所有的实例对象。而通过实例.类属性名修改,只影响实例的属性值,而类属性或其他子类对象值不变 2.实例属性,只能通过实例.属性名访问,不能用类名.属性名访问 3.实例方法可以通过类和实例.方法名访问,但是: 实例.方法名()调用时候,会自动传递实例对象作为self传入 类名.方法名 ()调用时候,需要手动传入实例对象,否则报错
class Rectangle():
__count_num=0
def __init__(self,height,width):
'''
初始化矩形类,有两个参数:
height:高度
width:宽度
两个参数均设置为私有,又由于其在实例方法中,故为私有实例属性
'''
self.__height=height
self.__width=width
self.__count=self.__count_result()
'''使用类方法实现计数,如果去掉这行,直接用实例.
方法名调用计数,会发现每调用一次方法就加一,而
不是每实例化一次加一,会导致错误'''
@staticmethod
def value_check(num):
if num>0:
return num
else:
raise ValueError('请输入一个大于零的数字')
@property
def count(self):
return self.__count
@property
def height(self):
return self.__height
@height.setter
def height(self,value):
self.__height=self.value_check(value)
@property
def width(self):
return self.__width
@width.setter
def width(self,value):
self.__width=self.value_check(value)
@classmethod
def __count_result(cls):
cls.__count_num+=1
return cls.__count_num
r1=Rectangle(10,20)
r2=Rectangle(20,30)
print(r1.count)
print(r1.count)
print(r1.count)
print(r2.count)
print(r2.count)
|