Python——面向对象

一 类与对象的理解与封装特性 面向对象的三大特性: 1、封装 :根据职责将属性和方法封装到一个抽象的类内 2、继承 :主要是为了实现代码的重用,相同的代码不需要重复的编写 3、多态 :不同的对象调用相同的方法,产生不同的执行结果,增加代码的灵活度 Python中类有很多,比如说 str ,这就是个类 以 class 对其进行定义 object 是其继承对象 那么类到底是什...
摘要由CSDN通过智能技术生成

一 类与对象的理解与封装特性
面向对象的三大特性:
1、封装 :根据职责将属性和方法封装到一个抽象的类内
2、继承 :主要是为了实现代码的重用,相同的代码不需要重复的编写
3、多态 :不同的对象调用相同的方法,产生不同的执行结果,增加代码的灵活度

Python中类有很多,比如说 str ,这就是个类
这里写图片描述
以 class 对其进行定义 object 是其继承对象
那么类到底是什么呢?
1) 什么是类
用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。类的具体化就是对象,也可以说类的实例是对象。
类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。
类具有方法,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。
2)什么又是对象
对象是类的具体形态
对象具有状态,一个对象用数据值来描述它的状态。
对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为
对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中
3)现在我们来定义一个简单的类

class People(object):
# object代表是, People类继承于哪一个类, 如果不知道继承哪个类, 就写object
    # 类的属性(魔术方法), 当创建对象的时候, 自动执行的函数
    def __init__(self, name, age, gender):
        # python解释器自动将对象传给self这个形参.
        # 将对象与该对象的属性绑定在一起.
        #  调用对象的属性两种方式:
        #       - 张三.name
        #       - self.name
        self.name = name  # 属性
        self.age = age  # 属性
        self.gender = gender  # 属性
        print(self)  # 实质上是一个对象, <__main__.人类 object at 0x7f4fdc4864a8>

    # 方法(在类里面定义的函数, 叫做方法)
    def eat(self):
        print("%s 正在吃饭..." % (self.name))

# 创建对象====根据模板(类)创建对象(真实存在)
张三 = People("张三", 10, 'male')
print("张三:", 张三)

# 看对象的属性
print(张三.name)
print(张三.age)
print(张三.gender)

# 让对象执行方法
张三.eat()

这里写图片描述
类是对象的具体话,类里面包含了对象的属性和方法
二 对象与类的进一步理解
创建一个类People,拥有的方法为砍柴,娶媳妇,回家;实例化对象,执行相应的方法
显示如下:
张三,18岁,男,开车去娶媳妇
李四,22岁,男,上山去砍柴
赵五,10岁,女,辍学回家
提示:
属性:name,age,gender
方法:goHome(), kanChai(),quXiFu()

class People(object):
    def __init__(self, name, age, gender):
        self.name = name
        self.age = age
        self.gender = gender

    def huiJia(self):
        print("%s,%d,%s,辍学回家" % (self.name, self.age, self.gender))

    def quXiFu(self):
        print("%s,%d,%s,开车去娶媳妇" % (self.name, self.age, self.gender))

    def kanChai(self):
        print("%s,%d,%s,上山砍柴" % (self.name, self.age, self.gender))


张三 = People('张三', 18, '男')
李四 = People('李四', 22, '女')
赵五 = People('赵五', 19, '男')

张三.quXiFu()
李四.kanChai()
赵五.huiJia()

这里写图片描述
前面我们学到过,怎么判断一个数据的类型,为 isinstance
这里我们同样可以用它来判断某个对象是否为某个类创建的

print(isinstance("hello", str))
print(isinstance(张三, People))

这里写图片描述
‘hello’ 是字符串,张三 是People这个类创建出来的
python中一切皆对象,包括变量,数据,函数等等内容
三 类的私有属性与私有方法
类的私有属性:
__private_attrs:两个下划线开头,声明该属性为私有,
不能在类地外部被使用或直接访问。
在类内部的方法中使用时 self.__private_attrs。
类的方法:
在类的内部,使用 def 关键字来定义一个方法,与一般函数定义不同,
类方法必须包含参数 self,且为第一个参数,self 代表的是类的实例。
self 的名字并不是规定死的(因为是形参),也可以使用 this,但是最好还是按照约定是用 self。
类的私有方法
__private_method:两个下划线开头,声明该方法为私有方法,只能在类的内部调用 ,
不能在类地外部调用。self.__private_methods

class People(object):
    def __init__(self,name,age,gender, money):
        self.name = name
        self.age = age
        self.gender = gender
        self.__money = money

    def __eat(self):
        print("eating dinner......")

p1 = People('user1', 10, 'male', 1000000)
print(p1.gender)
print(p1.__money)

这里写图片描述
由于__money为私有属性并不能被调用:AttributeError: ‘P

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值