什么是面向对象?
面向对象是一种思想,是基于面向过程而言的,就是说面向对象是将功能等通过对象来实现,将功能封装进对象之中,让对象去实现具体的细节;这种思想是将数据作为第一位,而方法或者说是算法作为其次,这是对数据一种优化,操作起来更加的方便,简化了过程。面向对象有三大特征:封装性、继承性、多态性,其中封装性指的是隐藏了对象的属性和实现细节,仅对外提供公共的访问方式,这样就隔离了具体的变化,便于使用,提高了复用性和安全性。对于继承性,就是两种事物间存在着一定的所属关系,那么继承的类就可以从被继承的类中获得一些属性和方法;这就提高了代码的复用性。继承是作为多态的前提的。多态是说父类或接口的引用指向了子类对象,这就提高了程序的扩展性,也就是说只要实现或继承了同一个接口或类,那么就可以使用父类中相应的方法,提高程序扩展性,但是多态有一点不好之处在于:父类引用不能访问子类中的成员。
举例来说:就是:比如说你要去饭店吃饭,你只需要饭店,找到饭店的服务员,跟她说你要吃什么,然后就会给你做出来让你吃,你并不需要知道这个饭是怎么错做的,你只需要面向这个服务员,告诉他你要吃什么,然后他也只需要面向你吃完收到钱就好,不需要知道你怎么对这个饭进行吃。
类和对象有什么区别?
类只是为所有的对象定义了抽象的属性与行为;是一个概念、一个称呼、一个类型。
对象是类的具体表达;是某种类型下有具体特征数据和操作方法的实体对象。
类的声明定义和语法
通过class 关键字进行定义。如:class Person,这是在声明创建一个名为"Person"的类。类的名称一般用大写字母开头,这是惯例。如果名称是两个单词,那么两个单词的首字母都要大写,例如class HotPerson,这种命名方法有一个形象的名字,叫做“驼峰式命名”。当然,如果故意不遵循此惯例,也未尝不可,但是,会给别人阅读乃至于自己以后阅读带来麻烦,不要忘记“代码通常是给人看的,只是偶尔让机器执行”。既然大家都是靠右走的,你就别非要在路中间睡觉了。
声明定义类型
通过class 关键字直接声明定义一个自定义类型
语法:
class 数据类型名称:
初始化类型的属性
在定义 Person 类时,可以为Person类添加一个特殊的__init__()方法。__init__() 方法的第一个参数必须是 self,当创建实例时,__init__()方法被自动调用,我们就能在此为每个实例都统一加上以下属性:
class Person(object):
def __init__(self, name, gender, birth):
self.name = name
self.gender = gender
self.birth = birth
对象的创建
class Author:
#给对象的特征赋值,在__init__()中进行操作
def __init__(self, username, password, nickname):
self.username = username
self.password = password
self.nickname = nickname
python中通过类型创建对象[a = Author()]会自动调用__init__()方法
创建对象a = Author()-> Author.__new__()方法创建对象
-> Author.__init__()方法初始化数据
->得到一个Author对象
类方法的调用
与普通的函数调用类似
1.类的内部调用:self.<方法名>(参数列表)。
2.在类的外部调用:<实例名>.<方法名>(参数列表)。