Python-面向对象

面向对象基本概念

面向过程:(Procedure Oriented,简称PO)就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
面向对象:(Object Oriented,简称oo)是把构成问题的事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事务在整个解决问题的步骤中的行为。
:是对现实生活中一类具有共同特征的事物的抽象。类是属性和方法的集合。
对象:类的实例化可以得到一个对象,对象就就具备了类的属性和方法。
属性:对象的属性特征。
方法:对象所具有的能力动作。
面向对象三大特征:封装、继承和多态。

封装

概念:将数据和操作封装为一个有机的整体,由于类中私有成员都是隐藏的,只向外部提供有限的接口,所以能够保证内部的高内聚性和与外部时低耦合性。使用者不必了解具体的实现细节,而只是要通过外部接口,以特定的访问权限来使用类的成员,能够增强安全性和简化编程。

# 封装
class Person:
    name = "zhangsan"
    age = 18
    def fun(self):
        print('fun')
    def stu(self):
        print('stu')
if __name__ == '__main__':
    p = Person()  # 类的实例化
    print(p.name) # zhangsan
    p.fun() # fun

Python私有化

# 私有化 私有化就是在属性或者方法前面加上两个横线 只能在本类里面使用 不能被子类继承
# 也就是说只有类的内部方法才能访问私有化的方法
# 在类的内部调用属性或方法要用self
class Person:
    __name = "zhangsan"
    age = 18
    def __fun(self):
        print('fun')
    def stu(self):
        print('stu')
if __name__ == '__main__':
    p = Person()  # 类的实例化  23print(p.name) # 私有化掉不到 所以报错 下面就不会继续执行了 报错 Python从上往下执行
    p.fun()
    p.stu()

# 报错信息:Traceback (most recent call last):
#   File "F:\pyWorkPlace\learnpython\duiixang.py", line 23, in <module>
#     print(p.name) # zhangsan
# AttributeError: 'Person' object has no attribute 'name'

构造方法&&析构方法

class Person:
    def __init__(self):
        print('init') # 构造方法 在类实例化的时候最先试行 最先执行 通常初始化一些对象
    def __fun(self):
        print('fun')
    def stu(self):
        print('stu')
    def __del__(self):
        print('def') # 析构方法 通常最后执行 ,用来回收对象 ,释放资源
if __name__ == '__main__':
    p = Person()  # 类的实例化  23行
    p.stu() # stu

self的使用方法 以及 del方法释放资源

class Person:
    def __init__(self):
        print('init')
        self.name = "zhangsan"  # 定义在方法内部的就要用self调用 写在外面的就不用
        self.age = 18
    def __fun(self):
        print('fun')
    def stu(self):
        print('stu')
    def __del__(self):
        print('def')
        del self.name  # 删除name 在del里面删除 用self调  就是释放资源用的 一般不需要手动删除
if __name__ == '__main__':
    p = Person()  # 类的实例化  23行
    p.stu() # stu
    print(p.name)

继承

子类继承父类 就是在子类的类后边加括号 里面写上父类的类名
Python是多继承 就是在子类的括号里面就可以写多个父类的名字
如果有多个父类的时候,顺序是先执行括号里面从左往右的顺序,因为左边的继承了父类 没有继承的话就找接下来的
就是
class Father
class Son(Father,xxx,yyy,zzz,…)

注意:java是单继承

# 父类
class Father:
    name = "父类的校长"
    def eat(self):
        print('父类的吃')
# 子类继承父类  就是在子类的类后边加括号 里面写上父类的类名
# 有子类就是执行子类的方法 没有执行父类的方法
class Son(Father):
    name = '校长'
    def eat(self):
        print('子-吃')
if __name__ == '__main__':
     s = Son()
    # print(s.name)
     s.eat()

子类里面用父类的方法: super关键字用法

子类的方法里面用super() super().study()

# 父类
class Father:
    def study(self):
        print('父类的方法')
# 子类
class Son(Father):
    def sleep(self):
        print('子类的方法')
        # 调用父类的方法
        super().study()
if __name__ == '__main__':
    s = Son()
    s.sleep()

多态

后期加入理解进行补充

引用原文:https://blog.csdn.net/weixin_44695969/article/details/92175840
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值