a. 隐藏对象的属性和实现细节,仅对外提供公共访问的方式
b. 封装原则==1.将不需要对外提供的内容隐藏起来2.把属性都隐藏,提供共公共方法对其访问;
a. 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类;
b. 继承分为单继承和多继承,其中多继承以逗号分割;#__base__只查看从左到右继承的第一个子类,__bases__则是查看所有继承的父类;
c. 继承是基于抽象的结果,抽象就是抽取事物的相似之处或者说是比较像的一部分;通过编程语言的实现,肯定先经历抽象,再通过继承的方式表达出抽象的结构;
d. 重用性–子类继承父类后,可以直接使用父类的全部属性(数据属性和函数属性),实现代码层面的重用;
e. 派生–子类重新定义自己的属性与父类属性命名相同,故子类调用新增属性时以子类为准;
a. 同一类事物多种形态
b. 不同的对象调用同一个函数,产生的不同的行为。老师.下课铃响了()===下班;学生.下课铃响了()===放学啦
#封装
class Animal:
def __init__(self):
self.__name = 'tom' # 私有属性
self.age = 3
def __get_name(self): # 私有方法
print('name is {:}'.format(self.__name))
def get_age(self): # 普通方法可以调用私有属性和方法
print('{:} age is {:} year'.format(self.__name, self.age))
# 实例化
cat = Animal()
# 调用私有属性
cat.get_age()
# 调用私有方法
cat._Animal__get_name()
# 继承
class Person:
def __init__(self, name):
self.name = name
def say_name(self):
print("name is {:}".format(self.name))
class Student(Person):
def __init__(self, name, age):
Person.__init__(self,name)
self.age = age
s1 = Student('zhangsan',24)
s1.say_name()
# 多态
import abc
class Animals(metaclass=abc.ABCMeta):
@abc.abstractmethod
def talk(self):
pass
class Peopel(Animals):
def talk(self):
print("say hello")
class Dog(Animals):
def talk(self):
print("wangwang")
class Pig(Animals):
def talk(self):
print('hengheng')
dog = Dog()
dog.talk()
参考资料:
https://www.cnblogs.com/peng104/p/9550305.html
https://www.jianshu.com/p/b04c6b0759a9