对象 = 属性 + 方法

self是什么东西  this指针

python的魔法方法

公有和私有

  私有的实现  name mangling 名字改编,名字重整 伪私有

类对象

class Turtle: #Python 中的类名约定一大写字母开头""" 关于类的一个简单例子"""#属性color = 'green'weight = 10legs = 4shell = Truemouth = '大嘴'#方法def climb(self):print('我们正在很努力的向前爬.....')def run(self):print('我正在飞快的向前跑....')def bite(self):print('咬死你.....')def eat(self):print('有得吃,很满足....')def sleep(self):print('困了,睡觉,万安 Zzzz')tt = Turtle() #创建实例对象,赋值给tt
print(tt.color)
tt.climb()  

运行结果:

[fengjunjie@localhost ~]$ python3 test.py
green
我们正在很努力的向前爬.....
OO = Object Oriented 面向对象

OO的特征

  封装

>>> list1 = [2,1,7,1,9,10]
>>> list1.sort()
>>> list1
[1, 1, 2, 7, 9, 10]
>>> list1.append(9)

  继承

>>> class Mylist(list):
...     pass
...
>>> list2 =Mylist()
>>> type(list2)
<class '__main__.Mylist'>
>>> list2.append(7)
>>> list2.append(5)
>>> list2.append(1)
>>> list2.sort()
>>> list2
[1, 5, 7]

  多态 不同对象对同一方法的响应不同的行动

>>> class A:
...     def fun(self):
...             print('我是小A....')
...
>>> class B:
...     def fun(self):
...             print('我是小B....')
...
>>> a = A()
>>> b = B()
>>> a.fun()
我是小A....
>>> b.fun()
我是小B....

self是什么东西,self是指针

  方法被调用的时候,对象会将自身作为第一个参数传给self参赛,接受到self的时候python就知道是哪一个对象在调用方法

>>> a = Ball()
>>> a.setName('球A')
>>> B = Ball()
>>> B.setName('球B')
>>> c = Ball()
>>> c.setName('球C')
>>> a.kick()
我叫球A,该死的,谁踢我...
>>> B.kick()
我叫球B,该死的,谁踢我...
>>> c.kick()
我叫球C,该死的,谁踢我...

Python的魔法方法

  据说,Python的对象天生拥有一些神奇的方法,他们是面向对象的Python的一切......

  他们是可以给你的类增加魔力的特殊方法......

  如果你的对象实现了这些方法中的某一个,那么这个方法就会在特殊的情况下被Python所调用,而这一切都是自动发生的......

  Python的魔法方法总是会被双下划线包围 __

 1.__init__(selfm, param1, param2...) 构造方法 在创建对象的时候被自动调用

>>> class Ball:
...     def __init__(self,name):
...             self.name = name
...     def kick(self):
...             print('我叫%s,该死的,谁踢我...' % self.name)
...
>>> b = Ball('土豆')
>>> b.kick()
我叫土豆,该死的,谁踢我...

公有和私有

  默认情况下对象的属性和方法都是公有的,可以通过.操作符来访问

>>> class Person:
...     name = '小Fish'
...
>>> p = Person()
>>> p.name
'小Fish'

  私有的实现  name mangling 名字改编,名字重整 伪私有

  在Python中定义私有变量只需要在变量名或函数名前加上'__'两个下划线,那么这个函数或变量就会为私有的了。 自动改成 _类名__变量名

>>> class Person:
...     name = '小Fish'
...
>>> p = Person()
>>> p.name
'小Fish'
>>> class Person:
...     __name = '小fish'
...     def getName(self):
...             return self.__name
...
>>> p = Person()
>>> p.name()
Traceback (most recent call last):File "<stdin>", line 1, in <module>
AttributeError: 'Person' object has no attribute 'name'
>>> p.getName()
'小fish'

 >>> p._Person__name
 '小fish'

  

转载于:https://www.cnblogs.com/fengjunjie-w/p/7506200.html

python--22 类和对象相关推荐

  1. Python基础(类与对象)

    Python基础(类与对象) 一.编程的两大思想 面向过程和面向对象 面向过程 面向对象 区别 事物比较简单,可以用线性的思维去解决 事物比较复杂,使用简单的线性思维无法解决 共同点:面向对象和面向过 ...

  2. Python基础——类与对象

    Python基础--类与对象 Python基础--类与对象 类与对象 数据类型 对象 类的创建 创建语法 类的创建 对象的创建 对象调用类中的内容 类属性,类方法,静态方法 类属性 访问类属性 类方法 ...

  3. Python的类和对象的介绍,定义类和对象,定义实例方法和属性以及Python中的魔法方法

    Day09新手小白学python 第九节 Python的类和对象的介绍,定义类和对象,定义实例方法和属性以及Python中的魔法方法 目录 Day09新手小白学python 前言 一.面向对象介绍 二 ...

  4. python的类和对象——类的静态字段番外篇

    什么是静态字段 在开始之前,先上图,解释一下什么是类的静态字段(我有的时候会叫它类的静态变量,总之说的都是它.后面大多数情况可能会简称为类变量.): 我们看上面的例子,这里的money就是静态字段,首 ...

  5. python类的构造方法名称_搞懂Python的类和对象名称空间

    代码块的分类 python中分几种代码块类型,它们都有自己的作用域,或者说名称空间:文件或模块整体是一个代码块,名称空间为全局范围 函数代码块,名称空间为函数自身范围,是本地作用域,在全局范围的内层函 ...

  6. python:类与对象

    目录 一.类与实例对象 1.声明类和实例化对象 2.对象的属性和初始化 3.实例方法 4.一切皆对象 5.类对象和类属性 6.静态方法和类方法 二.类的简单继承 1.继承的简单使用 2.重写父类方法和 ...

  7. python的类和对象_Python类与对象实验

    一.任务描述 本实验任务主要对Python类与对象进行一些基本操作,通过完成本实验任务,要求学生熟练掌握Python类与对象的关系,并对Python类与对象的基本操作进行整理并填写工作任务报告. 二. ...

  8. Python的零基础超详细讲解(第十三天)-Python的类与对象

    基础篇往期文章如下: Python的零基础超详细讲解(第一天)-Python简介以及下载 Python的零基础超详细讲解(第二天)-Python的基础语法1 Python的零基础超详细讲解(第三天)- ...

  9. Python进阶-----类、对象的相关知识

    一.声明类 class 类名: #一般类名的首字母大写 '类的文档字符串' 类体 例如创建一个中国人的类: 1 class Chinese: 2 '这是一个中国人的类' #类的文档字符串 3 name ...

  10. python 类-如何理解python的类与对象?

    挂一个自己的学习笔记 这个时间一长就搞错了,还经常回头来看一看,尤其是self的用法. python中一切皆为对象,所谓对象:我自己就是一个对象,我玩的电脑就是对象,坐着的椅子就是对象,家里养的小狗也 ...

最新文章

  1. (剑指Offer)面试题54:表示数值的字符串
  2. 修改Docker容器字符编码为-zh_CN.UTF-8中文字符集
  3. CSP认证201604-1 折点计数[C++题解]:枚举、遍历
  4. 利用FS寄存器获取KERNEL32.DLL基址算法的证明
  5. oracle中check约束性别,关于Oracle Check类型约束的导入与启用
  6. c语言输出26个英文字母的能量值,菜鸟求助,写一个随机输出26个英文字母的程序...
  7. 新建网站与新建Asp.Net+Web+应用程序的区别
  8. 查看linux版本的三种常用方法
  9. 合肥.NET俱乐部第二期技术沙龙活动预告
  10. redis实例python_生产消费者模式与python+redis实例运用(基础篇)
  11. C++ string转字符串
  12. LAMP架构调优(六)——开启长链接
  13. 如果你想提高创新,那么本书就是答案
  14. 华为密盒M310最新固件-精简美化版
  15. Android跳转第三方App,淘宝,微信,QQ等。
  16. Apache监控与调优(七)MPM相关参数
  17. 我用这个小程序,副业赚钱轻松日入300+
  18. Comparable
  19. 双层pdf-不用手动添加目录超链接教程
  20. 一次项目开发中,收获的经验和教训

热门文章

  1. C++/MFC修行之路(6)停靠窗口
  2. 程序员架构师修行之路
  3. 计算机键盘能直接接手机吗,电脑键盘怎么连接手机
  4. git远程代码回滚_git 远程分支回滚
  5. 举头望明月打计算机术语,关于月亮的谜语
  6. 惨兮兮解决mysql安装坑
  7. 排列组合 C语言函数,排列组合c怎么算 计算方法是什么
  8. 如何在shell中实现 backspace
  9. 互联网思维到底是什么——移动浪潮下的新商业逻辑
  10. Skyler2003的资源QwQ