1. Encapsulation 封装
- 在程序设计中,封装(Encapsulation)是对具体对象的一种抽象,即将某些部分隐藏起来,在程序外部看不到,其含义是其他程序无法调用;将类或者是函数中的某些属性限制在某个区域之内,外部无法调用
- 类包含了数据与方法,将数据和方法放在一个类中就构成了封装
- 封装的好处:
- 保护隐私(把不想别人知道的东西封装起来)
- 隔离复杂度
2.Information hiding 信息隐藏
- 定义:信息隐藏是隐藏对象或函数的详细信息的过程。隐藏这些细节会导致抽象,从而降低外部复杂性并使对象或函数更易于使用
- 如何实现:在设计和确定模块时,使得一个模块内包含的特定信息(过程或数据),对于不需要这些信息的其他模块来说,是不可访问的。
3.Inheritance 继承
- 继承是新建类的一种方式,新建的类被称为子类或者派生类,被继承的类被称为父类或者基类
- 子类可以使用父类的属性和方法;类解决了对象与对象之间代码冗余的问题;继承解决了类与类之间代码冗余的问题
- 继承的分类:
-
经典类:没有继承object类的子子孙孙类的都属于经典类
-
新式类:继承了object类的子子孙孙类的都属于新式类
-
在python2中才有经典类和新式类之分,在python3中都是新式类
-
class Person(): def __init__(self,firstname,lastname) -> None: self.firstname = firstname self.lastname = lastname def printname(self): print(self.firstname,self.lastname) class Student(Person): pass s1 = Student('liu','amber') s1.printname() liu amber
-
class Person(): def __init__(self,firstname,lastname) -> None: self.firstname = firstname self.lastname = lastname def printname(self): print(self.firstname) class Student(Person): def __init__(self, firstname) -> None: self.firstname = firstname print('my name is',firstname) def printname(self): return super().printname() s1 = Student('liu') s1.printname() my name is liu liu
-
多重继承容易导致钻石继承(菱形继承)问题
4.attibubte vs. property
-
定义setter(),getter()来操作属性
-
class Student(): def __init__(self,age): self._age = age def getage(self): return self._age def setage(self,age): self._age = age s = Student(
-