类定义:
class ClassName
字母数字下划线组成,首字母不能是数字,驼峰命名
类对象:类名直接调用
__init__() 的特殊方法(构造方法),该方法在类实例化时会自动调用
__init__() 方法可以有参数,参数通过 __init__() 传递到类的实例化操作上
self代表类的实例,而非类
类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。
self 不是 python 关键字,我们把他换成 runoob 也是可以正常执行的:
实例方法:实例调用
在类的内部,使用 def 关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数 self, 且为第一个参数,self 代表的是类的实例
类方法:@classmethod,可通过类名直接调用,也可实例调用
不能调用类的属性值
静态方法:@staticmethod,可通过类名直接调用,也可实例调用,可以不传递参数
不能调用类的属性值
继承:子类要不要传初始化参数看父类
Python 同样支持类的继承,如果一种语言不支持继承,类就没有什么意义。派生类的定义如下所示:
class DerivedClassName(BaseClassName1):
全部继承,不重写方法:
多继承
class DerivedClassName(Base1, Base2, Base3):
需要注意圆括号中父类的顺序,若是父类中有相同的方法名,而在子类使用时未指定,python从左至右搜索 即方法在子类中未找到时,从左到右查找父类中是否包含方法。
方法重写:跟父类中函数名重复叫重写,父类中没有的函数名叫拓展
super(Child,c).myMethod():超继承,既想拥有父类的方法又想拥有自己的方法.
类属性与方法
类的私有属性
__private_attrs:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。在类内部的方法中使用时 self.__private_attrs。
类的方法
在类的内部,使用 def 关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数 self,且为第一个参数,self 代表的是类的实例。
self 的名字并不是规定死的,也可以使用 this,但是最好还是按照约定是用 self。
类的私有方法
__private_method:两个下划线开头,声明该方法为私有方法,只能在类的内部调用 ,不能在类的外部调用。self.__private_methods。
私有属性:
私有方法: