面向对象(Object Oriented Programming)OOP
一、类:
1、 静态的属性
2、 方法
对象:类的一个实实在在的案例,实例
3、面向的对象的操作过程: 定义设计类
4、注意事项:
(1)、中英文符号(不应该)
(2)、变量和类的命名规范问题(不应该)
(3)、PEP8规范(从现在开始PEP8规范)
(4)、缩进(致命问题)
5、面向对象的编程语言有三个特征:
(1)、封装
(2)、继承
(3)、多态
1、封装
将属性私有化,提供公开的方法来设置和访问的过程
封装:
Python三种封装的写法:
(1)、常规写法
将属性私有 __属性名称
(2)、调用全局函数property,将set和get传递过去
对象.属性名称
(3)、使用annotation(注解)property来二次封装,(注意:此 处存在一个伪重载)
class User:
def __init__(self, name, age, password, sex):
self.__name = name
self.__age = age
self.__password = password
self.__sex = sex
def get_name(self):
return self.__name
def set_name(self, name):
self.__name = name
def get_age(self):
return self.__age
def set_age(self, age):
self.__age = age
def get_password(self):
return self.__password
def set_password(self, password):
self.__password = password
def get_sex(self):
return self.__sex
def set_sex(self, sex):
self.__sex = sex
property(set_sex, get_sex)
u1 = User(“ls”, 16, “123456”, “女”)
u1.sex = “男”
print(u1.sex)
函数的重载(overload)
函数名称相同,参数的个数或类型不同
注意:Python没有函数重载,因为python弱数据类型语言
函数的重写|覆盖(override)
说的是面向对象的继承中,子类继承了父类的方法,但是不满足子 类的需求, 从而重新覆盖父类的方法的现象。
2、继承(extend):
类似于Java private 表示除了类本身,其他的都不能访问
类似于java protected 表示除了本身,子类也允许访问
class Person:
def speak(self):
print("哈哈")
class RichMan(object):
def __init__(self):
self.heihei = 100000000
self._xixi = "alibaba"
self.gupiao = 'apply'
def _study(self):
print("嘻嘻")
def make_heih(self):
print("嘿嘿")
class Son(RichMan, Person):
def __init__(self):
super().__init__()
def speak(self):
print("请说话")
if name == ‘main’:
s = Son()
s._study()
print(s._xixi)
s.speak()
3、多态:
父类引用指向子类实例的现象,叫做多态
注意:Python是弱数据语言,而弱数据类型语言天生支持多态