一、定义类、子类、类的实例化、子类的实例化、继承、实例属性和实例方法

示例:

  1. class Fruit():
  2. '''
  3. 定义一个水果类,包含水果的一些属性和一些方法。
  4. '''
  5. def __init__(self,name,color,shape,taste):
  6. self.name = name
  7. self.color = color
  8. self.shape = shape
  9. self.taste = taste
  10. print(self.name+"的小时候是这样的,它的颜色是:"+self.color+",它的形状是:"+self.shape+",它的味道是:"+self.taste)
  11. def colorChange(self,new_color):
  12. self.color = new_color
  13. print(self.name + "的颜色变成了:"+self.color)
  14. def sizeChange(self,new_size):
  15. self.shape = new_size
  16. print(self.name + '的大小变成了:'+self.shape)
  17. def tasteChange(self,new_taste):
  18. self.taste = new_taste
  19. print(self.name + '的味道变成了:'+self.taste)
  20. def growUp(self):
  21. print("慢慢的它长大了...")
  22.  
  23. class waterFruit(Fruit):
  24. '''
  25. 定义一个水分多的水果类,包含多水分的属性和一些方法。
  26. '''
  27. def __init__(self,name,color,shape,taste,water_pencent):
  28. # Fruit.__init__(self,name,color,shape,taste)
  29. self.name = name
  30. self.color = color
  31. self.shape = shape
  32. self.taste = taste
  33. self.water_pencent = water_pencent
  34. print(self.name+"的小时候是这样的,它的颜色是:"+self.color+",它的形状是:"+self.shape+",它的味道是:"+self.taste+",它的水分是:"+self.water_pencent)
  35. def waterChange(self,new_water):
  36. self.water_pencent = new_water
  37. print(self.name + "的水分变成了:" + self.water_pencent)
  38. banana = Fruit('香蕉','绿色','长条形','微甜')
  39. banana.growUp()
  40. banana.colorChange('黄色')
  41. banana.sizeChange('椭圆形')
  42. banana.tasteChange('很甜')
  43. watermelon = waterFruit('西瓜','绿色','圆形','甜的','90%')
  44. watermelon.growUp()
  45. watermelon.waterChange("95%")
  46. watermelon.tasteChange("超级甜")

二、类属性

1、类的数据属性:它是静态的类属性,直接绑定在类上而不是某个实例上,在使用时通过类+"."操作符+属性来调用。如下例:

  1. >>> class foo():
  2. foo = 100
  3. >>>
  4. >>> print(foo.foo)
  5. 100
  6. >>> foo.foo += 1
  7. >>> print(foo.foo)
  8. 101
  9. >>>

2、方法(也是类的属性):必须通过实例去调用,类不能直接调用。

  1. >>> class foo():
  2. foo = 100
  3. def doNothing(self):
  4. print('Do nothing!')
  5. >>>
  6. # 必须先实例化对象:
  7. >>> fooAction = foo()
  8. >>> fooAction.doNothing()
  9. Do nothing!
  10. # 直接用类调用方法时报错:
  11. >>> foo.doNothing()
  12. Traceback (most recent call last):
  13. File "<pyshell#19>", line 1, in <module>
  14. foo.doNothing()
  15. TypeError: doNothing() missing 1 required positional argument: 'self'

3、查看类的属性:

  1. # 1:通过内建函数dir()查看类的内部属性,返回的是一个属性列表
  2. >>> dir(foo)
  3. ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'doNothing', 'foo']
  4. # 2:通过类的__dict__属性查看,返回的是一个字典,key是属性名,value是具体的值。
  5. >>> foo.__dict__
  6. mappingproxy({'foo': 100, 'doNothing': <function foo.doNothing at 0x0000029E039C7F28>, '__weakref__': <attribute '__weakref__' of 'foo' objects>, '__dict__': <attribute '__dict__' of 'foo' objects>, '__doc__': None, '__module__': '__main__'})
  7. >>> print(foo.__dict__)
  8. {'foo': 100, 'doNothing': <function foo.doNothing at 0x0000029E039C7F28>, '__weakref__': <attribute '__weakref__' of 'foo' objects>, '__dict__': <attribute '__dict__' of 'foo' objects>, '__doc__': None, '__module__': '__main__'}

4、一些类的特殊属性

  1. # 类的名字:
  2. >>> print(foo.__name__)
  3. foo
  4. # 类说明
  5. >>> foo.__doc__
  6. >>> print(foo.__doc__)
  7. None
  8. >>>
  9. >>> class fooo(foo):
  10. pass
  11. # 类的所有父类构成的元组
  12. >>> print(foo.__bases__)
  13. (<class 'object'>,)
  14. >>> print(fooo.__bases__)
  15. (<class '__main__.foo'>,)
  16. >>>
  17. # 类属性的字典查看方法
  18. >>> print(foo.__dict__)
  19. {'foo': 100, 'doNothing': <function foo.doNothing at 0x0000029E039C7F28>, '__weakref__': <attribute '__weakref__' of 'foo' objects>, '__dict__': <attribute '__dict__' of 'foo' objects>, '__doc__': None, '__module__': '__main__'}
  20. # 定义类foo所在的模块:
  21. >>> print(foo.__module__)
  22. __main__
  23. >>>
  24. # 实例foo1所对应的类:
  25. >>> print(foo1.__class__)
  26. <class '__main__.foo'>
  27. >>>

初始Python类的更多相关文章

  1. python类的定义和使用

    python中类的声明使用关键词class,可以提供一个可选的父类或者说基类,如果没有合适的基类,那就用object作为基类. 定义格式: class 类名(object): "类的说明文档 ...

  2. python类:magic魔术方法

    http://blog.csdn.net/pipisorry/article/details/50708812 魔术方法是面向对象Python语言中的一切.它们是你可以自定义并添加"魔法&q ...

  3. python 类编程相关内容(更新)

    python作为面向对象的编程语言,类和对象相关的编程当然是少不了的! python类: class 类名 : 变量名 [ = 初始值 ] …… def 函数名 ( self [ , 其余参数列表 ] ...

  4. (转)python类:magic魔术方法

    原文:https://blog.csdn.net/pipisorry/article/details/50708812 版权声明:本文为博主皮皮http://blog.csdn.net/pipisor ...

  5. Python类中super()和__init__()的关系

    Python类中super()和__init__()的关系 1.单继承时super()和__init__()实现的功能是类似的 class Base(object): def __init__(sel ...

  6. python基础之初始python

    初始python之基础一 一.Python 介绍 1.python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发 ...

  7. LightMysql:为方便操作MySQL而封装的Python类

    原文链接:http://www.danfengcao.info/python/2015/12/26/lightweight-python-mysql-class.html mysqldb是Python ...

  8. python 类属性与方法

    Python 类属性与方法 标签(空格分隔): Python Python的访问限制 Python支持面向对象,其对属性的权限控制通过属性名来实现,如果一个属性有双下划线开头(__),该属性就无法被外 ...

  9. python 类以及单例模式

    python 也有面向对象的思想,则一切皆对象 python 中定义一个类: class student: count = 0         books = [] def __init__(self ...

随机推荐

  1. Java--时间处理

    package javatest; import java.text.SimpleDateFormat; import java.util.Date; class timeTest{ public s ...

  2. linux之eval用法(高级bash程序员的必修之技)

    1. eval command-line 其中command-line是在终端上键入的一条普通命令行.然而当在它前面放上eval时,其结果是shell在执行命令行之前扫描它两次.如: pipe=&qu ...

  3. 重新编译安装gcc-4.1.2(gcc版本降级)之TFS安装

    wget http://gcc.parentingamerica.com/releases/gcc-4.1.2/gcc-4.1.2.tar.gz tar -zxfv gcc-4.1.2.tar.gz ...

  4. Java基础算法集50题

    最近因为要准备实习,还有一个蓝桥杯的编程比赛,所以准备加强一下算法这块,然后百度了一下java基础算法,看到的都是那50套题,那就花了差不多三个晚自习的时间吧,大体看了一遍,做了其中的27道题,有一些 ...

  5. 3.django笔记之form表单

    作者:刘耀 瞎copy伸手党 我在诅咒你. Django的form的作用: 1.生成html标签 2.用来做用户提交的验证 3.可以和models一起使用(modelform) 一.form基础 工程 ...

  6. 6.python模块(导入,内置,自定义,开源)

    一.模块 1.模块简介 模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py.模块可以被别的程序引入,以使用该模块中的函数等功能.这也是使用python标准库的方法. 类似于函数式编程和面向过 ...

  7. SAE上传web应用(包括使用数据库)教程详解及问题解惑

    转自:http://blog.csdn.net/baiyuliang2013/article/details/24725995 SAE上传web应用(包括使用数据库)教程详解及问题解惑: 最近由于工作 ...

  8. Hibernate 分页时 Long 无法转化成Integer类型 异常

    转自:http://loquat.iteye.com/blog/818547 报错:java.lang.Long cannot be cast to java.lang.Integer   Long ...

  9. Android常用布局

    FrameLayout(框架布局):从屏幕的左上角开始显示对象,一个覆盖一个,主要用于选项卡视图和图像切换器.# 所有的组件都放在屏幕的左上角,并且以层叠进行显示. LinearLayout(线性布局 ...

  10. HDU 4513 吉哥系列故事——完美队形II manacher

    吉哥系列故事——完美队形II Problem Description 吉哥又想出了一个新的完美队形游戏! 假设有n个人按顺序站在他的面前,他们的身高分别是h[1], h[2] ... h[n],吉哥希 ...