python面向对象day1

1.面向对象思想

面向对象的思想

  1. 核心思想:
    面向对象,是一种编程思想. 强调的是实现任何功能, 找一个对象来帮我们完成, 只需要关注完成
    功能的结果.

  2. 区分面向对象和面向过程
    面向过程: 注重的是步骤
    面向对象: 注重的是对象和完成功能的结果, 不用关注步骤 ,简化开发, 实现代码的重用.

  3. 面向对象的特点和特征
    特点:

    1. 符合人们思考习惯
    2. 将程序原从执行者转换成指挥者
    3. 将复杂的事情简单化

    特征: 封装,继承,多态

    万物皆对象.

    2.类和对象的语法

"""
掌握 类的使用语法

1. 概念
    在面向对象的概念中有两个重要的概念: 类 对象
    并且:
        对象 由 类创建得到

2. 类的概念
    类可以简单理解为 创建对象的模具.

    类概念: 类 是用于对同一类事物 共有的特征和功能的 描述(抽象)

3. 语法:
    中文描述女朋友类:
        外在特征: 性别,脸型,身高,体重
        内在功能: 做饭,洗衣服,花钱

    类描述事物:
        外在特征:  属性 (在类中的变量) ---> 存储数据,方便后面使用
        内在功能:  方法 (在类中的函数) ---> 封装重复代码块

    语法:
        class 类名:
            # 属性
            # 方法
            def 方法名1(self):
                #方法体
                pass
            def 方法名2(self):
                #方法体
                pass
        备注:
            a. 通过关键字 class 声明一个类
            b. 每一个类 取一个类名(标识符), 建议类名采用大驼峰命名
            c. 方法定义到类名的下面,缩进的里面. 方法的定义和函数差不多, 只是
            第一个形参用self占位.

4. 创建对象
    对象: 实实在在的一个事物(实体) 被称为对象
    对象: 由类(抽象)创建得到的, 这个过程被 实例 化

    语法:
        变量名 = 类名()  # 创建对象(实例化对象)

    备注:
        1, 真正创建对象的代码: 类名(), 但是 往往需要使用一个变量存储 创建的对象
        2, 使用对象 通过 对象的 "变量名" 使用对象
        3, 每次创建的对象的 地址是不一样的(每次创建的都是新对象)
"""
"""
1. 设计一个类: 手机类
    特征(属性):
    功能(方法): 打电话,发短信,上网,看电影
"""


class Phone:
    # 方法
    def call(self):
        print("打电话~~")

    def sendMsg(self):
        print("发短信~~")

    def surfInternet(self):
        print("上网~~")

    def movie(self):
        print("看电影~~")


# print(id(Phone))
# 创建对象
iphone6 = Phone()
iphone7 = Phone()

# 使用对象
print(iphone6)
print(iphone7)

# 使用对象上的方法
iphone6.call()
iphone6.call()  # 一直用
iphone6.sendMsg()  # 都可以用
iphone6.surfInternet()  # 都可以用

3.属性的操作

"""
掌握对象上属性的操作

1. 前提: 先创建对象
    对象变量=类名()  # 没有类就自己定义一个类

2. 使用对象(就是使用对象上的属性和方法)
    对象.成员

3. 使用对象上的属性
    a. 添加属性
        对象.属性名 = 值  # 属性名 类似于变量名 存储数据
    b. 查看属性
        print(对象.属性名)
    c. 修改属性
        对象.属性名 = 新值
    d. 删除属性
        del 对象.属性名
    e. 判断是否有某个属性(attribute)
        hasattr(对象,属性名) ---> bool

4. 对象上方法的使用
    对象.方法名()
"""


# 定义类
class Phone:
    def call(self):
        print("打电话~")

    def sendMsg(self):
        print("发短信~")


# 1. 前提: 先创建对象
iphone6 = Phone()

# 2. 操作对象上的属性
# 添加属性
iphone6.color = "土豪金"
iphone6.size = "6寸"  # 尺寸
iphone6.price = 2000  # 价格
# 查看
print(iphone6.color)
print(iphone6.size)
print(iphone6.price)
# 修改属性
iphone6.color = "白色"
print(iphone6.color)
# 删除属性
del iphone6.size
# print(iphone6.size) # 'Phone' object has no attribute 'size' 手机对象没有属性 size
# 判断
print(hasattr(iphone6, "size")) # 实参 实际的数据
print(hasattr(iphone6, "price"))


# 对象上方法的调用
iphone6.call()
iphone6.call()
iphone6.sendMsg()

4.对象中的方法中的self

"""
学习目标: 明确知道self是什么

1. self的概念
    a. 通过对象 调用对象上的方法, python解释器自动将调用方法的那个对象作为方法的第一个
    参数传递给方法
    b. 所以我们定义方法的时候第一个参数必须写self占位, 用于接收自动传入的对象
    c. self到底是什么?  哪个对象调用我,self就是那个对象

2. 目的: 方便我们在方法中使用对象上的属性(数据)
"""
"""
定义一个类: 学生类
定义一个方法: 跑步的方法
"""
class Student:
    # 方法
    def run(self): # self 谁调用我,我就是谁
        # print(id(self))
        print(f"{self.name}跑步锻炼身体~~~")

# 创建俩学生对象,添加属性
zhangfei = Student()
zhangfei.name = "张飞"
zhangfei.age = 18
zhangfei.run()
# print(id(zhangfei))

lisi = Student()
lisi.name = "李四"
lisi.age = 19
lisi.run()
# print(id(lisi))

5.初始化方法: __init __

"""
学习目标: 掌握初始化方法的使用

1. 初始化方法__init__()概念
    a. 初始化方法也是在类中定义的一个方法, 第一个参数也是self
    b. 特殊性
        1. 名字固定 __init__
        2. 调用时机: 创建对象的时候自动调用
    c. 作用: 在初始化方法中 通过self绑定(添加)初始属性
            self.属性名 = 值

2. 具体语法:
    class 类名:
        def __init__(self,形参1,形参2):
            self.属性1 = 形参1
            self.属性2 = 形参2

    # 创建对象的时候传递给 __init__方法实参
    类名(实参1,实参2)
    类名(形参1=实参1,形参2=实参2)
"""
"""
定义一个类: 学生类
定义一个方法: 跑步的方法
"""


class Student:
    def __init__(self, name, age):
        print("初始化方法,自动调用")
        self.name = name
        self.age = age

    # 方法
    def run(self):  # self 谁调用我,我就是谁
        print(f"{self.name}跑步锻炼身体~~~")


# 创建学生对象,添加属性
zhangfei = Student("张飞", 18)
# 初始化就自带了属性
# print(zhangfei.name)
# print(zhangfei.age)
zhangfei.run()
# 创建李四对象
lisi = Student(age=19, name="李四")
lisi.run()

6.自定义描述信息方法:str

"""
学习目标: 掌握 __str__方法的使用

1. 说明
    a. 默认通过print(对象) 输出的对象的描述信息 仅仅是对象的地址
    b. 我们可以在类中 定义一个方法 __str__(self)
        特殊:
            1. 打印对象的时候自动调用
            2. 在__str__() 方法中返回对象的自定义的描述信息


"""
class Student:
    def __init__(self,name,age):
        """初始化方法,绑定初始属性"""
        self.name = name
        self.age = age
        
    def run(self):
        print(f"{self.name},今年{self.age},在跑步锻炼身体~~")
        
    # 定义 __str__方法
    def __str__(self): # TypeError: __str__ returned non-string (type NoneType)
        return f"<学生{self.name}对象,内存地址{id(self)}>"  # hex(id(self))
        
# 创建对象
zhangfei = Student(name="张飞",age=18)
#zhangfei.run()
print(zhangfei)

lisi = Student(name="李四",age=18)
print(lisi)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值