栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python — 面向对象【1】

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python — 面向对象【1】

面向对象 什么是面向对象

以前的编程我们把它称为“面向过程的编程”

重点在于:做什么

现在的编程我们把它称为“面向对象的编程”(oop)

重点在于:谁去做

类

用来描述具有相同属性或者方法的对象的集合

属性:对象的描述形象

方法:对象的行为

类的特性是:封装、继承、多态

封装

  • 在类中对数据的赋值、内部调用对外部用户是透明的

  • 把一些功能的实现细节不对外暴露

继承

  • 继承:即一个派生类(derived class)继承基类(base class)的字段和方法。

  • 为实现代码的重用, 一个类可以派生出子类

  • 继承也允许把一个派生类的对象作为一个基类对象对待。

多态

  • 接口重用

  • 一个接口,多种实现(重写)

对象(实例)

具体的某个事物,实实在在的一个例子

实例化:创建一个类的实例

面向对象的优点

  • 迭代更新方便

  • 结构清晰、易于管理

class ATM():
    #属性
    money = 50000
    country = "China"
    bank = "gonghang"
    #方法
    def get_money(self,money):
        print(f"get money:{money}")
​
#实例化:创建一个类的实例
a1 = ATM()
a2 = ATM()
print(dir(a1))
#属性访问
print(a1.money,a2.country)
a1.get_money(500)
类的定义和使用 命令规范

一般首字母大写(大驼峰式命令)例如:Person,GoodsInfo

定义关键字:class

python2 ==》经典类,新式类

python3 ==》 新式类

python2显示object的类是新式类,没有就是经典类(python3默认是新式)

class A:
    pass
class B():
    pass
class C(object):
    pass
类空间和实例空间
class ATM():
    #属性
    money = 50000
    country = "China"
    bank = "gonghang"
    #方法
    def get_money(self,money):
        print(f"get money:{money}")
​
#实例化:创建一个类的实例
a1 = ATM()
a2 = ATM()
print(dir(a1))
#属性访问
print("实例访问".center(20,"*"))
print(a1.money,a2.country)
a1.get_money(500)
print("类访问".center(20,"*"))
print(ATM.money)
print("="*30)
a1.area = "hunan"
print(a1.area)
# print(a2.area)    #没有,上面只是a1添加了,但是ATM没有添加,所以a2没有,指针可以引用类空间,但是不能改变
ATM.color = "blue"    #ATM 添加了color所以a1和a2都会有
print(a1.color,a2.color)
​
#类空间 和 实例空间
print("类空间".center(30,"*"))
print(ATM.__dict__)
print("a1的空间".center(30,"*"))
print(a1.__dict__)
print("a2的空间".center(30,"*"))
print(a2.__dict__)
​
a1.money = 20000
print(a1.money,a2.money)
#实例只能引用类,不能改变类

类创建的时候会生成类空间

实例化对象生成实例空间,不同的实例之间,空间都是独立的

实例查找属性方法的时候,会先在实例空间查找,找不到就去类空间查找

类空间找不到,就去父类空间找

实例空间会有一个父对象指针,通过这个指针实例就可以访问类的属性方法了

 

__init__方法

实例对象的构造方法(初始化方法)

实例化对象的时候自动调用__init__方法

class ATM():
    #属性
    money = 50000
    country = "China"
    bank = "gonghang"
​
    def __init__(self,area):
        #实例属性
        self.area = area
    #方法
    def get_money(self,money):
        print(f"get money:{money}")
​
#实例化
atm1 = ATM("hunan")
atm2 = ATM("hubei")
print(atm1.area,atm2.area)
__new__方法

创建实例的方法 ,一般情况下不需要重写

总结

__new__是创建实例的方法 __init__是创建好的实例进行初始化的方法

__new__方法必须要传入一个参数(cls),代表当前类 __new__必须返回一个实例对象 __init__的self就表示__new__返回的实例,__init__在对这个实例进行初始化工作 子类没有定义__new__,就会找父类的__new__ 新式类才有__new__ 如果实例化对象和本身class不一致,__init__不会执行 __new__方法属于静态方法 __init__方法属于实例方法

单例模式

无论是实例化多少次,都返回同一个对象实例

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1018615.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号