1.Python三大特性:封装、继承、多态
1.1 封装
a. 隐藏对象的属性和实现细节,仅对外提供公共访问的方式
b. 封装原则==1.将不需要对外提供的内容隐藏起来2.把属性都隐藏,提供共公共方法对其访问;
1.2 继承
a. 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类;
b. 继承分为单继承和多继承,其中多继承以逗号分割;#__base__只查看从左到右继承的第一个子类,__bases__则是查看所有继承的父类;
c. 继承是基于抽象的结果,抽象就是抽取事物的相似之处或者说是比较像的一部分;通过编程语言的实现,肯定先经历抽象,再通过继承的方式表达出抽象的结构;
d. 重用性–子类继承父类后,可以直接使用父类的全部属性(数据属性和函数属性),实现代码层面的重用;
e. 派生–子类重新定义自己的属性与父类属性命名相同,故子类调用新增属性时以子类为准;
1.3 多态
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()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
参考资料:
https://www.cnblogs.com/peng104/p/9550305.html
https://www.jianshu.com/p/b04c6b0759a9