python入门(10)
类属性
类属性的定义与特点
类属性与实例属性的特点:
- 类属性:类对象拥有的属性,被类对象和实例对象共同拥有,内存中存在一份副本,减少资源
class BmwCar(object):
brand='BMW'
def __init__(self,style,color):
self.style=style
self.color=color
if __name__ == '__main__':
print("第一种方法:通过类对象进行访问")
print(BmwCar.brand)
print("第二种方法:通过实例对象访问")
obj1=BmwCar("x1","white")
print(obj1.brand)
class BmwCar(object):
brand='BMW'
__money=10
_num=20
def __init__(self,style,color):
self.style=style
self.color=color
def printmony(self):
print(self.__money)
print(BmwCar.__money)
if __name__ == '__main__':
print("第一种方法:通过类对象进行访问")
print(BmwCar.brand)
print(BmwCar._num)
print("第二种方法:通过实例对象访问")
obj1=BmwCar("x1","white")
print(obj1.brand)
print(obj1._num)
print(obj1.printmony())
- 类属性的分类:
- 公有类属性,保护类属性,私有类属性
- 私有类不可以在外部访问
- 在类的内部,可以通过方法访问
修改类属性
class BmwCar(object):
brand='BMW'
__money=10
_num=20
def __init__(self,style,color):
self.style=style
self.color=color
def printmony(self):
print(self.__money)
print(BmwCar.__money)
if __name__ == '__main__':
print("###########通过类对象进行修改###########")
print(BmwCar.brand)
BmwCar.brand="宝马"
print(BmwCar.brand)
print("######通过实例对象来修改")
b1=BmwCar('x1',"red")
b1.brand='大众' # 创建了一个新的动态实例属性
print(b1.brand)
print(BmwCar.brand)
注意点:
- 类属性通过类对象来修改
- 不可以通过shilling对象来修改,否则增加的是一个动态实例属性(init有这个字段,就覆盖)
类方法
类属性
class BmwCar(object):
brand='BMW'
__money=10
_num=20
def __init__(self,style,color):
self.style=style
self.color=color
@classmethod
def changemethod(cls):
cls.brand="大众"
print(cls)
if __name__ == '__main__':
BmwCar.changemethod()
print("类方法之后",BmwCar.brand)
pass
注意点:
-
类方法的格式
@classmethod
def 方法名(cls):
pass
-
可以修改类属性
-
可以通过类对象访问,也可以通过实例对象访问