在python中,一个对象的特征也称为属性(attribute)。它所具有的行为也称为方法(method)

结论:对象=属性+方法

在python中,把具有相同属性和方法的对象归为一个类(class)

比如人类,动物,植物等等,这些都是类的概念。

类是对象的模板或蓝图,类是对象的抽象化,对象是类的实例化。类不代表具体的事物,而对象表示具体的事物。

>>> class people:

...     def speak(self):

...             print ("hello!")

...
''' 定义一个people类,定义一个speak方法,但没有定义属性, 因为属性不属于类,而是属于各个类的实例。也就是说属于对象。 因此我们可以给每个实例设置不同的属性 '''

>>>  class people:                    #类

...     def speak(self):            #方法

...             print ("hello!")

...

>>> 
>>> jack = people()    #创建jack实例

>>> tom = people()    #创建tom实例

>>> import tab        #导入table键功能模块

>>> jack.            #输入jack.<tab键>,可以看到以下方法

jack.__class__   jack.__doc__     jack.__module__  jack.speak()

>>> jack.speak()    #引用speak方法 hello!
>>> jack.age=39            #添加age属性

>>> jack.height=120        #添加height属性

>>> jack. jack.__class__   jack.__module__  jack.height       jack.__doc__     jack.age         jack.speak()

>>> jack.height 120

>>> jack.age 39
'''

#初始化对象 创建类时,可以定义一个特定的方法,名为__init__(),只要创建这个类的一个实例 就会运行这个方法。

可以向__init__()方法传递参数, 这样创建对象时就可以把属性设置为你希望的值 __init__()这个方法会在创建对象时完成初始化,
'''

>>>  class peo:

...     def __init__(self,name,age,sex):

...             self.Name = name

...             self.Age = age

...             self.Sex = sex

...     def speak(self):

...             print "my name" + self.Name

...

>>>  实例化这个类的对象时:

>>> zhangsan=peo("zhangsan",24,'man')

>>> print zhangsan.Age 24

>>> print zhangsan.Name zhangsan

>>> print zhangsan.Sex man   # ----------

>>> print zhangsan < __main__.peo instance at 0x7fe5041ec248>

'''

要让print能打印出来,就得使用__str__方法 __str__()这个方法告诉python在打印(print)一个对象时,具体显示什么内容

'''

#! /usr/bin/python class peo:

def __init__(self,name,age,sex):

self.Name = name

self.Age = age

self.Sex = sex

def speak(self):

print "my name" + self.Name

def __str__(self):

msg='my name is: ' +self.Name+ ","+ "my age is: " + self.Age +','+ "my sex is:" +self.Sex

return msg

shanghai=peo('shanghai','23','man')

''' msg='my name is: ' +self.Name+ ","+ "my age is: " + self.Age +','+ "my sex is:" +self.Sex

此处23是年龄,但被转成了字符串,因为self.Age定义的是字符串     如果不将23转义,则会报错     如果希望在程序中就事先转义,需要使用str(self.Age) '''

print shanghai

''' 之前多次用到self这个形参

类就好比是一张蓝图,使用一个类可以创建多个对象实例, speak()方法在被调用时,必须知道是哪个对象调用了它.

这里self参数就会告诉方法是哪个对象来调用的.这称为实例引用。 zhangsan.speak()就好比写成了peo.speak(zhangsan) '''

__author__ = Kayson

python 类、对象、方法、属性的更多相关文章

  1. 全面了解python中的类,对象,方法,属性

    全面了解python中的类,对象,方法,属性 python中一切皆为对象,所谓对象:我自己就是一个对象,我玩的电脑就是对象,坐着的椅子就是对象,家里养的小狗也是一个对象...... 我们通过描述属性( ...

  2. Python 类的私有属性与私有方法

    1.隐藏的使用场景 在Python类中,有些属性和方法只希望在对象的内部被使用,而不希望在外部被访问到, 2.定义方式, 在属性名或方法名前增加两个下划线,定义的就是私有属性或方法 #其实这仅仅这是一 ...

  3. 福利->KVC+Runtime获取类/对象的属性/成员变量/方法/协议并实现字典转模型

    我们知道,KVC+Runtime可以做非常多的事情.有了这个,我们可以实现很多的效果. 这里来个福利,利用KVC+Runtime获取类/对象的所有成员变量.属性.方法及协议: 并利用它来实现字典转模型 ...

  4. python类及其方法

    python类及其方法 一.介绍 在 Python 中,面向对象编程主要有两个主题,就是类和类实例类与实例:类与实例相互关联着:类是对象的定义,而实例是"真正的实物",它存放了类中 ...

  5. python—类对象和实例对象的区别

    最近在对RF的通讯层的模块进行封装,需要将之前放在类似main里面的一个方法,如下所示:这段代码是开发提供,用于接口测试,模拟底层通讯,具体的通讯是在dll内,python这边只是做了个封装让RF进行 ...

  6. Python类对象

    python类对象 python类对象支持两种操作:属性引用和实例化. 属性引用 使用 Python 中所有属性引用所使用的标准语法: obj.name. 有效的属性名称是类对象被创建时存在于类命名空 ...

  7. Django---CBV和FBV的使用,CBV的流程,给视图加装饰器,Request对象方法,属性和Response对象,form表单的上传

    Django---CBV和FBV的使用,CBV的流程,给视图加装饰器,Request请求对象方法,属性和Response响应对象,form表单的上传 一丶CBV和FBV       在Django中存 ...

  8. WPFS数据绑定(要是后台类对象的属性值发生改变,通知在“client界面与之绑定的控件值”也发生改变须要实现INotitypropertyChanged接口)

    WPFS数据绑定(要是后台类对象的属性值发生改变,通知在"client界面与之绑定的控件值"也发生改变须要实现INotitypropertyChanged接口) MainWindo ...

  9. Python之对象的属性

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #Python之对象的属性 #http://python.jobbole.com/82622/ #对象的属性 ...

  10. python 学习笔记7(类/对象的属性;特性,__getattr__)

    27. 属性的__dict__系统 1)对象的属性可能来自: 其类的定义,叫做类属性 继承父类的定义 该对象实例定义(初始化对象时赋值),叫做对象属性 2)对象的属性存储在对象的 __dict__ 属 ...

随机推荐

  1. 程序设计入门——C语言 第7周编程练习 2 鞍点(5分)(5分)

    2 鞍点(5分) 题目内容: 给定一个n*n矩阵A.矩阵A的鞍点是一个位置(i,j),在该位置上的元素是第i行上的最大数,第j列上的最小数.一个矩阵A也可能没有鞍点. 你的任务是找出A的鞍点. 输入格 ...

  2. C# 文件类型

    C# 中一些常用文件类型: designer.cs 是窗体设计器生成的代码文件,作用是对窗体上的控件做初始化工作(在函数InitializeComponent()中).VS2003以前都把这部分代码放 ...

  3. AJAX总结

    艾瑞宝迪,早上好,前端小菜鸟最近想更深入的了解ajax,无奈网上都没有看到合适系统的总结,于是心血来潮开始自己在博客园上的处女作,方便自己以后查看,也可以和大家一起交流

  4. [Linux] 常用Linux命令

    查看端口占用状态 netstat -atunp | grep hadoop netstat -atunp | grep / zk 查看进程被哪些用户启动 ps - aux | grep hadoop ...

  5. Git代码管理常用命令

    1) 远程仓库相关命令 检出仓库:$ git clone git://github.com/jquery/jquery.git查看远程仓库:$ git remote -v添加远程仓库:$ git re ...

  6. 实现View的移动的方法总结

    btw:这篇博客的内容其实算是<Android开发艺术探索>的一篇读书笔记,在书本的知识上加了一点自己的理解,并用自己的话描述出来.<Android开发艺术探索>是一本不错的书 ...

  7. Ubuntu: ImportError: No module named xgboost

    ImportError: No module named xgboost 解决办法: git clone --recursive https://github.com/dmlc/xgboost cd ...

  8. 根据UUID和MD5, 生成可以用作Token的字符串

    import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util. ...

  9. 学习ios【1】Objective-C 基本语法

    一 了解一下,找参考资料 1.看书学习object-c语法,第一本看的是<objective-c程序设计>. 2.官网:https://developer.apple.com/librar ...

  10. Lex&Yacc Parser错误发生后再次parser之前恢复初始状态

    使用lex yacc 对文件进行parser时,如果文件内容有错,parser报错,然后你修改了文件,再次读入文件进行parser,如果你不是重启程序进行parser,那就需要对做些处理了. &quo ...