1.私有化
在属性和方法前加_ _
python私有化的原理
python并不能像java一样从访问权限上去限制属性和方法,没有真正的私有属性和方法。
私有化只是在两个下划线开头的名字前加前缀'_类名',导致不能直接通过原名进行访问
1.getter - 间接获取属性的值
语法:
@property
def 函数名(self):
return 属性值
setter - 给属性赋值(间接)
想要添加setter必须先添加getter
a.语法:
@getter名.setter
def 函数名(self, 参数):
其他语句
self.属性 = 值
1.对象方法
声明:直接声明在类里的函数
特点:有默认参数self,调用时不用传参,指向当前对象
怎么调用:对象.
什么时候使用:实现函数的功能需要使用对象属性
就用对象方法
2.类方法
声明:在函数声明前加@classmethod
特点:默认参数cls,调用时不用传参,指向当前类
调用:类.
什么时候使用:在不需要对象属性的前提下,需要类的字段
3.静态方法
声明:声明函数前加@staticmethod
特点:没有参数
调用:类.
什么时候使用:不需要使用对象属性,也不用类的字段
class Person:
num=61
def __init__(self,name,age):
self.name=name
self.age=age
def eat(self,food):
print('%s在吃%s' % (self.name,food))
@classmethod
def show(cls):
print('类方法')
@staticmethod
def static():
print('静态方法')
Person.static()
Person.show()
继承 - 让子类直接拥有父类的属性和方法
语法
class 类名(父类):
内容
在子类中添加字段和方法 - 直接声明
在子类中实现__init__方法并且添加对象属性
需要用super().__init__()去调用父类的init方法
类中的函数调用过程
先看当前类中是否有这个方法,如果有直接调用自己的
方法,没有就去看父类有没有,如果有就调用父类的方法
如果父类没有就去找父类的父类,以此类推,直到
找到object类里都没有这个方法,才报错