Python学习-面向对象编程

面向对象编程

一、介绍

面向对象:

现实——>具体的事物
程序——>对象

面向对象涉及的:

对象
属性
方法

对象:
例如:小明的手机
小红的手机
小绿的手机
。。。
以上是对象的集合,某某某的手机就是具体的事物,在程序中就是对象。
从对象中提取共同的特征或者特点,作为一个类别属性。

类别:手机类。
电脑类
学生类
等等

共同的特征:品牌、颜色、价格。。。。
共同的动作:打电话、发短信、玩游戏。。。

特征就是属性;
动作就是方法;
将属性和方法封装为某个类。

多个对象——>提取共同的特征和动作——>封装到一个类中;这就是面向对象编程。

二、例子

#所有的类名要求首字母大写,多个单词采用驼峰式命名
#python3中所有的类默认继承object
'''
class 类名(父类):
    属性:特征

    方法:动作

'''
class Phone():
    pass
    #属性

    #方法

#使用类创建对象
phone1 = Phone()
print(phone1)
<__main__.Phone object at 0x000001AF514E2988>

Process finished with exit code 0

可以看到phone1为一个Phone的对象。
类就好比一个模具,利用模具创建一个个实物,就是使用类创建对象。

添加类属性:
添加类属性,修改属性;

class Phone():
    brand = 'huawei'
    #属性

    #方法

#使用类创建对象
phone1 = Phone()
print(phone1)
print(phone1.brand)

phone2 = Phone()
print(phone2)
print(phone2.brand)
phone2.brand = 'iphone'
print(phone2.brand)
<__main__.Phone object at 0x000001F446B63048>
huawei
<__main__.Phone object at 0x000001F446B63108>
huawei
iphone

Process finished with exit code 0

可以看到phone1的属性品牌为huawei,phone2的属性由huawei改为iphone。

#定义类和属性

class Student():
    # 类属性
    name = 'xiaoming'
    age = 2

#使用类创建对象
xiaoming = Student()
print(xiaoming.age)
xiaoming.age = 18 #赋值操作,动态创建对象属性
print(xiaoming.age)
#程序底层操作顺序,现在对象内存中查找属性,然后在类内存中查找属性
#若对象内存中由某个属性,则不会再去类内存中查找。
2
18

#修改类属性,用类名操作
Student.name = 'xiaolv'

print(xiaoming.name)
xiaolv

3.类中的方法

#类中的方法:动作
#种类:普通方法、类方法、静态方法、魔术方法
'''
普通方法格式:
def 方法名(函数名)(self,[选填参数]):
    pass
'''

class Phone():
    brand = 'huawei'
    price = 4999
    type = 'honor 30'

    # Phone类里面的方法:call
    def call(self):
        print('正在打电话。。。')
        print('留言',self.note)

phone1 = Phone() #类创建对象
phone1.note = '我是phone1的note' #添加对象的属性
print('====phone1======',phone1) #
phone1.call()  #调用对象的方法

phone2 = Phone()
phone2.note = '我是phnoe2的note'
print('====phone2====',phone2)
phone2.call()

self是自身的意思,call的参数为self,phone1.call()=call(phone1);那么call方法中的self.note=phone1.note。
所以两个输出为各自的note。

#类中的方法:动作
#种类:普通方法、类方法、静态方法、魔术方法
'''
普通方法格式:
def 方法名(函数名)(self,[选填参数]):
    pass
'''

class Phone():
    brand = 'huawei'
    price = 4999
    type = 'honor 30'

    # Phone类里面的方法:call
    def call(self):
        print("正在访问通讯录。。。")
        for person in self.address_book:
            print(person.items())
        print('正在打电话。。。')
        print('留言',self.note)

phone1 = Phone()
phone1.note = '我是phone1的note'
phone1.address_book = [{"1561231234":"xiaoming","1561231235":"xiaolv"}]
print('====phone1======',phone1)
phone1.call()

phone2 = Phone()
phone2.note = '我是phnoe2的note'
print('====phone2====',phone2)
phone2.call()
====phone1====== <__main__.Phone object at 0x0000022817A46C48>
正在访问通讯录。。。
dict_items([('1561231234', 'xiaoming'), ('1561231235', 'xiaolv')])
正在打电话。。。
留言 我是phone1的note
====phone2==== <__main__.Phone object at 0x0000022817A46B48>
正在访问通讯录。。。

Process finished with exit code 1

如果只有单个对象具有某个属性,程序会出错,因为对象2没有对应的属性。如上结果,phone2并没有对应的通讯录,程序无法向下执行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值