1.面向对象和面向过程

面向过程重点在于: 步骤

面向对象重点在于: 对象

一般大型项目都采用面向对象编程思维

2.面向对象三大特性

object:  所有类的父类,超类,上帝类,基类

封装: 把属性和方法隐藏到类中,对外提供公共的接口

继承: 子类继承了父类的属性和方法

多态: 传入不同的对象,实现不同的效果(python中的多态是伪多态,其原因是它不需要声明变量类型,导致它的类型是随着传入的参数而变化的,具体看视频)

3.类和对象

类: 类是具有相同特征和行为的一类事物的统称,是抽象的概念
特征: 属性
行为: 方法

对象: 对象是类的具体体现,实际存在的事物

类和对象关系: 先有类,再根据类创建对象

4.定义类和创建对象

知识点:

1.类的组成: 属性和方法

2.定义类的格式:		

class 类名(): 
	pass

3.创建对象的格式:   对象名 = 类名()

4.对象调用方法:    对象名.方法名()

示例:

"""
类的组成: 属性和方法(函数)
定义类的格式:
class 类名():
    pass
创建对象的格式:
对象名 = 类名()
对象调用方法:
对象名.方法名()
"""
# 1.先定义类
class Person():
    # 方法(本质就是一个函数,特殊:形参第一个位置是self)
    def study(self):
        print('好好学习,天天向上')
# 2.再创建对象
zs = Person()
# 3.对象调用方法
zs.study()

5.self关键字

知识点:

self中文含义: 自己

self在python中含义: 调用该方法的对象本身的地址

示例:

"""
类的组成: 属性和方法(函数)
定义类的格式:
class 类名():
    pass
创建对象的格式:
对象名 = 类名()
对象调用方法:
对象名.方法名()
self关键字:自己(调用该函数的对象自己)
"""

# 1.先定义类
class Person():
    # 方法(本质就是一个函数,特殊:形参第一个位置是self)
    # self谁调用该方法,self就代表谁
    def study(self):
        print('self:', self)
        print('好好学习,天天向上')


# 2.再创建对象
# 3.对象调用方法
zs = Person()
print('张三:',zs)
zs.study()

ls = Person()
print('李四:',ls)
ls.study()

6.打印对象地址的两种方式

知识点:

1. 直接打印对象名,即print(对象名): 显示的是16进制格式的地址

2. id函数打印对象名: 显示的是10进制格式的对象地址

示例:

# 1.先定义类
class Person():
    # 方法(本质就是一个函数,特殊:形参第一个位置是self)
    # self谁调用该方法,self就代表谁
    def study(self):
        print('好好学习,天天向上')


# 2.再创建对象
zs = Person()
print('直接打印对象显示的是16进制格式:', zs)
print('使用id(对象名)显示的是10进制格式:', id(zs))
# 3.对象调用方法
zs.study()


7.类外添加属性和获取属性

知识点:

类外添加对象属性: 对象名.属性 = 值

类外获取对象属性: 对象名.属性

示例:

"""
类外添加对象属性: 对象名.属性 = 值
类外获取对象属性: 对象名.属性
"""
# 1.定义类
class Student():
    # 定义学习方法
    def study(self):
        print('我在学习')

# 2.根据类创建对象
stu = Student()
# 3.给stu对象添加属性
stu.name = '斌子'
stu.age = 18
# 4.获取stu对象的属性
print('姓名:' ,stu.name)
print('年龄:' ,stu.age)

8.类内添加属性和获取属性

知识点:

类内添加对象属性: self.属性 = 值   #self是对象的地址

类内获取对象属性: self.属性

示例:

"""
类内添加对象属性: self.属性 = 值
类内获取对象属性: self.属性
"""
# 1.定义类
class Student():
    # 定义学习方法
    # self代表调用该方法的对象自己  self == stu
    def study(self):
        # 3.给stu对象添加属性
        self.name = '斌子'
        self.age = 18
        # 4.获取stu对象的属性
        print(f'{self.age}岁的{self.name}正在学习...')

# 2.根据类创建对象
stu = Student()
# 3.调用方法
stu.study()


9.魔法方法

知识点:

魔法方法:

1. 方法名格式: _ _方法名_ _()

2. 特殊点: 在一定的时机,自动调用

3. 常见的魔法方法:  
    (1). __init__() 
        执行时机:创建对象时自动调用    
        作用: 初始化对象(给对象的属性赋值)  

    (2).__str__()  
        执行时机:打印对象时调用    
        作用: 打印对象时打印的内容是str返回的字符串,注意必须返回字符串,否则报错

    (3).__del__()  
        执行时机:删除对象时自动调用    
        作用: 一般用于记录对象删除的日志

init魔法方法示例:

# 1.先有类
class Student():
    def __init__(self,xm,nl):
        self.name = xm
        self.age = nl
    # 学习方法
    def study(self):
        print(f'{self.age}岁的{self.name}正在学习...')

# 2.创建对象
# 3.调用方法
stu1 = Student('张三',18)  # 自动执行init方法
stu1.study()

stu2 = Student('李四',28)  # 自动执行init方法
stu2.study()


str魔法方法示例:

# 1.先定义类
class Student():
    # 属性
    def __init__(self,name,age):
        self.name = name
        self.age = age
    # 实例方法:必须手动调用
    def get_str(self):
        return f'姓名:{self.name},年龄:{self.age}'

    # str魔法方法: 打印对象名的时候,自动调用
    def __str__(self):
        return f'姓名:{self.name},年龄:{self.age}'
# 2.创建对象
stu = Student('张三',18)
# 3.需求:打印对象的信息 姓名和年龄
print(stu)

del魔法方法示例:

# 1.先定义类
class Student():

    def __init__(self, name, age):
        # 属性
        self.name = name
        self.age = age

    # del魔法方法: 删除对象时自动调用
    # 删除对象: 默认程序结束时自动删除对象  或者  提前del手动删除
    def __del__(self):
        print('对象被删除了...')


# 2.创建对象
stu = Student('张三', 18)
# 3.手动删除对象
del stu

print('程序的最后一行代码....')


10.定义类的3种方式

知识点:

在python3.x版本之前:  旧式类  想要变成新式类必须手动继承object

python3.x版本之后:  新式类: 默认都继承了object类

也就是3以后,为了更省略,继承object都不用你写了.甚至连括号都不用写

示例:

# 定义类方式1:
class Person1(object):
    def show(self):
        print('我是person1')


# 定义类方式2  相当于省略了object
class Person2():
    def show(self):
        print('我是person2')


# 定义类方式2   连括号都省略了
class Person3:
    def show(self):
        print('我是person3')



原文地址:http://www.cnblogs.com/nanguyhz/p/16800101.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性