类大致分为两块区域:
class A:
name = "测试者" 第一部分:静态属性
def __init__(slef): 第二部分:方法部分
pass
def func(self):
pass
细分的化分为
class A:
name = "123" #静态字段
__age = 12 #私有静态字段
def __init(self,sex,monery):
self.__sex = sex #私有对象属性
self.monery = monery #对象属性
def func(self):pass #普通方法
def _func(self): pass #私有方法
@classmethod
def func2(cls):pass #类方法
@staticmethod
def func3():pass #静态方法
@property
def save_monery(self): #属性
return "数值"
私有静态字段:
- 不能在本类的外部进行访问,派生类均不可访问
- 只能在本类的内部可以访问
私有方法:
- 不能在本类的外部进行访问,派生类也不可访问父类的私有方法
- 只能在本类的内部可以访问
私有属性:
- 只有在类的内部可以访问
注意:私有方法和私有变量其实都是可以访问,(不过不推荐)
__私有变量 == _类名__私有变量
__私有方法 == _类名__私有方法
类方法:
@classmethod
类方法(参数为类本身)
类方法的应用场景
1,类中有些方法是不需要对象参与
2,对类中的静态变量进行改变
3,继承中,父类得到子类的类空间 #哪一个类调用就是哪一个类的空间
静态方法:
@staticmethod
静态方法(无参):
1.代码块,清晰
2.复用性
静态方法虽然不依赖于对象,类,但是为了保持代码的整体性和一致性
才将其设置为静态方法,而不放在类的外面当普通函数
@property
属性
方法名 上方加上 @property
会使调用方式发生该变 由原先的方法名加括号,变成属性名
代码上没有实质性的改变,只是让原来的方法调用看起来像属性
@property
def 伪装像属性的方法名(self):
return self.__属性
伪装属性的修改 #对伪装属性进行修改就会触发以下方法
如: 伪装属性 = 新值
@伪装的方法名 点 setter
def 伪装的方法名(self,修改后的值):
@伪装的方法名 点 deleter #del 伪装属性 会执行该方法
def 伪装的方法名(self):
例如:
class Goods:
discount = 0.9 #折扣
def __init(self,name,old_monery):
self.name = name #名字
self.__old_monery = old_monery #商品原价
@property
def price(self):
new_price = self.__old_monery * self.discount
return new_price #此处必须返回一个数值型数据
@price.setter # 被装饰方法名 点 setter
def price(self,value):
self.__old_monery = value / self.discount #将商品原价修改了,目的是让new_price 等于 value
@price.deltter # 被装饰方法名 点 deltter
def price(self,value):
del self.__old_monery #删除原商品价格属性
g = Goods("苹果",5)
g.price #获得商品的折扣价格 执行的其实是 price(self) 方法
g.price = 10 #修改商品折扣后的价格 执行的其实是 @price.setter 的方法
del g.price #删除商品价格 执行的其实是 @price.deltter 的方法