python对象的三个属性_Python中类和类的实例化、私有属性面,以及面向对象的三大属性...

024f78f0f736afc37b134484f56789c0b64512b1.jpeg?token=d38026b5d13933ebf254557cb71ded0a&s=7E18668646106BC25E93A1EE0300F01BPython

我们已经学了很多东西了,今天我们来聊一聊Python中类、实例化、私有属性、封装,继承都是些什么,他们都可以干些什么,我们马上开始吧开发工具:IDLE (Python 3.7 64-bit) 、PyCharm 注:不需要和小编一样的版本,只要是Python3的版本就可以,语法方面没有什么不同的。

a1ec08fa513d2697fa6fdb141285d0ff4216d8ba.jpeg?token=80c2d0456493eb7425a906292e804b0e&s=D35131C242A3A8EE085E6BBE0300D012人生苦短,我用Python

1.类的定义(__init__方法,基类,self)

类的定义:class ClassName(object):,object是父类名,object是一切类的基类。__init__方法是函数写在类中就是方法,实例化对象的时候必须调用__init__方法。

5d6034a85edf8db1d24e9213415dbf50574e74e3.jpeg?token=606adf7e85910e39d5d89a426084ab17&s=38C2A1441AA4976C0EF9C50F000070C2类的定义

2.类的属性

属性的本质就是变量。

a71ea8d3fd1f4134663e29d86d61f7ced0c85e89.jpeg?token=5ec609c145a8705087c40e052af8c2b3&s=E0C2B743DBEC864B0C41E41F0000E0C3类属性

也就是说类的属性就是它们的共有属性,将他们共同的部分写在前面可以节省一部分的代码,使得代码显示的更简洁美观。实例化化的属性,就是他们之间的不同部分,这个是不能省略的。如果要从新修改类属性,以上代码为列,可以用从新赋值的方法进行操作,即:dog.eye=4,这样就完成了从新赋值的修改操作。

3.私有化

对于Python中的类属性,可以通过双下划线”__”来实现一定程度的私有化。“ _”和“ __”的使用 更多的是一种规范/约定,没有真正达到限制的目的。“_”:以单下划线开头只能允许其本身与子类进行访问,(起到一个保护的作用)。“__”:双下划线的表示的是私有类型的变量。这类属性在运行时属性名会加上单下划线和类名。“__foo__”:以双下划线开头和结尾的(__foo__)代表python里特殊方法专用的标识,如 __init__()。

8326cffc1e178a825511267abe7d1189a877e8ba.jpeg?token=face9cde03f92640eb5681133ba9135d&s=A8C2B1449EA6976C5ED5AC0E0000A0C1加了下划线之后eye和leg被保护起来了

1f178a82b9014a90191f1ec4ef095b16b31bee2d.jpeg?token=d68324650f1fbaa1588552a623049fad&s=BAD0A14C5EE0BF7444ED550F0000E0C0单下划线只隐藏我们可以直接写出来调用

单下划线只是隐藏了,但是可以通过直接输入方法强制访问到和修改它的参数。

8601a18b87d6277f67bb72616e467d34e824fc45.jpeg?token=9265a9541aa5bf1b9275aca7008e8d1e&s=2AC281445AA4976C0661748D0000A0C2双下划线直接完全保护无法外部访问

万一有一天我们真的要修改双下划线里面的参数的要怎么办?访问它要怎么办?私有化的方法Python提供了一种getLeg的方法查看私有方法,可以在类中进行访问。

3bf33a87e950352ad239b22e143d99f6b2118b3a.jpeg?token=e5d0b45ef6842130a804295b80e6a620&s=A8C2B1445EE1BB6C5EE58C1A0000C083用getLeg方法可以访问到保护的类方法

9d82d158ccbf6c811c0b7cacfb40d33133fa403c.jpeg?token=066c035a6bd7845f848d93d28624d0ca&s=BAC3A14CDAE6936C007CF48D000070C0查看私有化的参数

那么问题来了,我们需要修改里面的数据应该怎么做呢?用setLeg方法修改私有化属性的参数,

bd3eb13533fa828b4af7b39bba612330960a5a70.jpeg?token=23001cbd2dad7e311eb2e3f7862a1f2a&s=B0D3A16CDEE6BF6C4C55240F0000E0C2setLeg方法修改私有化属性

总结:实现私有化的方法:dog._Animal__leg,的方法实现,查看用print(dog._Animal__leg).双下划线是主动在leg前加了一个Animal的类名,所以我们看不到。还可以dog._Animal__leg=7,直接修改leg。

4.面向对象的三大特性:封装、继承、多态。

封装:def函数就是一个封装,将所有属性和方法封装到一个类之中。用的时候pip一下就行。

f31fbe096b63f6244b917200c03a89fc1b4ca363.jpeg?token=a0f1ed1edcffb5fbae83524721b2598c&s=A8D2A144DAA4976C467D340F0000E0C0封装

adaf2edda3cc7cd97520d91a7e7f433bb90e9163.jpeg?token=f1928352d154092ed0c13b6fb5ab2c6b&s=A8C2A1449AA7936C0C41440F0000E0C0继承

当出现相同的方法的时候,现在的会覆盖之前的值。可以继承Animal的类,这样可以提高写代码的效率。“class People( Animal):”在括号内写入类名就是继承。

a6efce1b9d16fdfab3b03825f2f1ee5096ee7b9b.jpeg?token=eb98683f59b3f31b684431eee8f12e7d&s=E9C2B346DAE6876C4E55AC0F0000B0C3多态就是同一指令做出的不同反映

Python中是通过重写的方式支持多态的,Amerca、chinses、Japen三个方法都重写了speak的方法。

a71ea8d3fd1f41345f5974126361f7ced0c85ef6.jpeg?token=c3049627584f612f8d183b2177c1c7ab&s=B2D3E16CDEE4B77C4C741D0F0000E0C0三个方法都从写speak的内容

今天就为大家分享到这里,因为四一边学习一边整理,大家有什么建议可以提出来,大家一起交流进步。大家加油!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值