Python之面向对象类和对象

  定义一个类:class

  定义类的语法:

class Test(object):"""类里定义一类事物共同的技能。可以是变量,也可是函数。"""camp = "Demacia"def attack(self):print("attack")

  如何使用类:类的用法----实例化和引用自己的属性

    一、内置类

        例如int() 加参数就能用。

        x=int(10)

        print(x)

    二、实例化

       定义的Test类,加括号。就是将Test类 变成一个具体的对象 Test()。

       所以,obj = Test()是将一个抽象的类Test,变成一个具体的对象的过程。这个过程就叫实例化。

    三、引用类的方法,类的特征(类的变量),类的技能(类的函数)

      print(Test.camp) 引用Test类里camp变量的值。demacia

      Test.attack(5578)

#一:实例化
# x=int(10)
# print(x)# obj=Garen() #实例化
# print(obj)#二:引用类的特征(类的变量)和技能(类的函数)
# print(Garen.camp)
# print(Garen.attack)
# Garen.attack(1231231) 

  如何使用实例:

  g1 = Test() 这样就是一个实例。将Test类实例了。对于g1来说,就是一个具体的存在对象。

#如何使用实例
class Test:                                                                        camp='Demacia'                                                                 def __init__(self,nickname):                                                   """                                                                        init的作用:self.nick是给自己定义了一个别名,叫nickname                                     实例化Test(),就会自动触发__init__方法的执行。                                             :param nickname:                                                           """                                                                        self.nick=nickname  #g1.nick='草丛伦'                                         def attack(self,enemy):                                                        # print('---------->',self.nick) #g1.nick                                  print('%s attack %s' %(self.nick,enemy))                                   g1=Test('草丛伦') #Test.__init___(g1,'草丛伦')
g2=Test('猥琐轮')
print(g1.nick)
g1.attack('George')                                                                print(g1.nick)
print(g1.camp)
print(g1.attack)
print(Test.attack)                                                                 Test.attack() #调用的是函数,
g1.attack() #self=g1     g1.attack是一种以绑定方法,调用attack的方式
Test.attack(g1)
# print(g2.nick)
# print(g2.camp)                                                                   

    Test.attack() 和g1.attack() 的区别:

         Test.attack()是调用的attack的函数。由类去调用就没有对象那种自动传值的功能

         g1.attack() 是g1绑定attack函数这个方法,会将g1自己作为第一个参数,传给后面的方法 (自动传值)。

  self的作用:

    由对象触发的,就有自动传值的功能。

    self就是对象自己。

    

#总结:
#类:一:实例化,二:引用名字(类名.变量名,类名.函数名)
#实例:引用名字(实例名.类的变量,实例名.绑定方法,实例名.实例自己的变量名)class Garen:camp='Demacia'def __init__(self,nickname):self.nick=nickname  #g1.nick='草丛伦'def attack(self,enemy):# print('---------->',self.nick) #g1.nickprint('%s attack %s' %(self.nick,enemy))# print(Garen.camp) #查
# Garen.camp='aaaaaa' #改
# print(Garen.camp)
#
# # del Garen.camp #删除
# # print(Garen.camp)
#
# Garen.x=1
# print(Garen.x)
g1=Garen('George')
# print(g1.nick)
# g1.nick='asb'
# print(g1.nick)
# del g1.nick
# print(g1.nick)# g1.sex='female'
# print(g1.sex)

  面向对象的程序设计OOD

     找对象 ----》找类(归纳对象共同的特征与技能,还有每个对象独有的特征)

   面向对象编程OOP

     先定义类 ---》实例化出对象

   面向对象分析OOA

   面向对象测试OOT

   面向对象维护OOSM

   定义学生类:特征:共同国籍(China)技能:查看成绩独有的特征:ID,名字,性别,省。

# #OOD
# #定义学生类:
# #特征:共同国籍(China)
# #技能:查看成绩
# #独有的特征:ID,名字,性别,省。# #OOP
class Student():country = "China"def __init__(self,ID,NAME,SEX,PROVINCE):self.id = IDself.name = NAMEself.sex = SEXself.province = PROVINCEdef search_score(self):"""查询分数技能:return:"""print("tell score")def study(self):"""学习技能:return:"""print('study')##类的用法:
##类的实例化,属性引用
s1 = Student("333",'george','man','neimeng')
s2 = Student("444",'wang','man','neimeng')##类的属性: 特征(变量)和技能(函数,绑定方法)
s1.search_score()
s2.search_score()
s1.study()
print(Student.country)
print(Student.__init__)
print(Student.study)Student.__init__(s1,2,3,4,5)    #这样是调函数

Student.study(s1)   #类查看自己的属性。Student.x =1 #给类增加一个属性。

  什么是对象,什么是类:

     在一个游戏中,每个玩家选一个英雄,每个英雄都有自己的特征和技能,特征既是数据属性,技能既是方法属性。特征与技能的结合就是一个对象。

    从一组对象中提取相似的部分就是类,类所有对象都具有的特征和技能的结合体。

  在Python中,用变量表示特征,用函数表示技能,因而类是变量与函数的结合体,对象是变量与方法(指向类的函数)的结合体。

  在Python3中,统一了类与类型的概念。类型和类就是一个。class。

在Python2中,分为新式类和经典类。在Python3中,都是统一的新式类。

  新式类和经典类声明的最大不同在于,所有新式类必须继承至少一个父类。

  所有类不管是不是显示声明父类,都有一个默认继承的object父类。父类也叫基类,基础的意思。

  可用 类名.__bases__ 来查看类都继承了那些父类。

  在Python2中的类的区别:

  经典类:

  class 类名:

    pass

  新式类:

  class 类名(父类):

    pass

   

在类的 __init__ 函数里不能有return的返回值。  在元类里详细说明。

对象的使用:

   对象也成为实例,

class Test(object):passT = Test()    #对象T就是类Test的实例。

  对象的用法: 

    只有属性引用。

  对象的属性:

   对象本身就只有特征(变量)

class Test(object):def __init__(self,id,name):self.id = idself.name = namedef A(self):passT = Test()
print(T.id,T.name)   #对象可以引用类的变量。  

查看类的名称空间和对象的名称空间:

  类的名称空间:

    类名.__dict__

  对象的名称空间:

    对象.__dict__

  在 Test.A 和 T.A 是不一样的内存地址。

  绑定方法的核心在于“绑定”,唯一绑定一个确定的对象。

基于面向对象开发:

#应用场景
#找不到共同特征和技能不用强求#对象:学校----->归类#共有的特征:商标为etiantian#共有的技能:招生#独有的特征:地址不一样,老师们,课程class School:tag='etiantian'def __init__(self,addr):self.addr=addrself.teacher_list=[]self.course_list=[]def zhaosheng(self):pass#对象:老师---->归类#共同的技能:教课#独有的特征:名字,性别,level,课程class Teacher:def __init__(self,name,sex,level):self.name=nameself.sex=sexself.level=levelself.course_list=[]def teach(self):pass#对象:学生---->归类#共同的特征:#共同的技能:search_score,handin#独有的特征:学号,名字,性别,课程
class Student:def __init__(self,ID,name,sex):self.id=IDself.name=nameself.sex=sexself.course_list=[]def search_score(self):passdef handin(self):passclass Course:def __init__(self,name,price,period):self.name=nameself.price=priceself.period=periods1=Student('123','sun','female')
# print(s1.id,s1.name,s1.sex)
# print(s1.course_list)
# s1.course_list.append('python')
# s1.course_list.append('linux')
# print(s1.course_list)

python_obj=Course('python',15800,'7m')
linux_obj=Course('linux',19800,'2m')s1.course_list.append(python_obj)
s1.course_list.append(linux_obj)
# print(s1.course_list)print('''student name is:%scourse name is :%scourse price is :%s''' %(s1.name,s1.course_list[0].name,s1.course_list[0].price))

    

转载于:https://www.cnblogs.com/george92/p/9138253.html

Python之面向对象类和对象相关推荐

  1. 【python】面向对象类、对象的介绍

    类的定义 语法: class 类名():属性方法 类名:是一个标识符,要遵循标识符的命名规范建议首字符大写,如Person如果是由多个单词组成,则建议为驼峰命名法,下划线分隔法 如:PersonTea ...

  2. python入门笔记——类和对象⑤(继承)

    python入门笔记--类和对象⑤(继承) # python中展现面向对象的三大特征:封装.继承.多态 # 封装:把内容封装到某个地方以便后续的使用 # 对封装来说,其实就是使用初始化构造方法将内容封 ...

  3. python代码学习——类与对象提升(继承、超继承,类的例题,魔术方法)

    python代码学习--类与对象提升 继承 继承的特殊属性: 代码示例 方法的重写和覆盖(overrrid) 总结 超继承 继承中的初始化 多继承 例题 类的魔术方法 哈希(hash)和eq方法 bo ...

  4. python随笔(类和对象)

    python : 3.6 面向对象 类和对象 类 : 是具有某些相同特征行为个体的抽象(模板).比如,人就是一个抽象概念 对象:是类的具体实现(实例).比如,李四就是人的具体实现 属性和行为 属性:名 ...

  5. php面向对象——类和对象

    php面向对象--类和对象 1.类和对象 <?php //定义一个类: class A{public $name="John"; //定义一个普通属性static $age= ...

  6. java面向对象-类和对象

    Java面向对象笔记 文章目录 Java面向对象笔记 java面向对象 类和对象 什么是类 定义 创建和使用 公式 构造方法 什么是构造方 怎么定义和使用构造方法 实列 This关键字 什么是成员变量 ...

  7. 笔记整理2----Java语言基础(二)06 断点调试与数据加密+07 面向对象-类与对象+08 java常用API-基础+09 java集合+10 IO流-基础

    06 断点调试与数据加密+07 面向对象-类与对象+08 java常用API-基础+09 java集合+10 IO流-基础 第06天 java基础语法 今日内容介绍  Eclipse断点调试  基 ...

  8. Python基础day07【文件读写、文件夹操作、面向对象(类、对象)】

    视频.源码.课件.软件.笔记:超全面Python基础入门教程[十天课程]博客笔记汇总表[黑马程序员]   目录 01.复习 1.1.递归函数参数问题 1.2.格式化输出位数 1.3.extend函数解 ...

  9. Python入门基础(6)--面向对象/类和对象/魔术方法

    面向对象基本概述 面向对象(Object Oriented Programming,OOP)编程:扩展性更强.可读性更好.面向对象的编程将数据和操作数据封装到对象中,组织代码和数据的方式更接近人的思维 ...

最新文章

  1. JVM加载class文件的原理机制
  2. thymeleaf模板的使用——1,thymeleaf概述|| thymeleaf 的使用方法|| 如何修改Thymeleaf的默认存放地址||Thymeleaf的相关语法
  3. Jdk1.8新特性(三)——方法引用::
  4. sqlsever2008数据库的备份与还原
  5. 好慌!支付宝App现“不锈钢内裤” 官方解释:已改为“煮内裤的锅”
  6. margin塌陷现象div盒子嵌套盒子外边距合并现象
  7. 掌握了这30道MySQL基础面试题,我成了面霸
  8. cv如何连接mysql_Naicvat操作数据库的基本操作
  9. 从技术角度,设备过保就坏,是怎么实现的
  10. 浏览器嗅探器检测(BrowserDetect.js)程序神器使用
  11. 利用qiskit实现量子门以及态的初始化
  12. 后缀–ize_以ize结尾的英语单词
  13. 苹果cms海螺大橙子首途v7模板源码
  14. springboot 定时器使用方法之并行
  15. 图片批量添加水印批量加背景缩放批量合并工具picUnionV4.0
  16. 用RCircos包来画圈圈图
  17. 逻辑函数公式化化简_数字IC面试题
  18. 系统资源的观察(摘自鸟哥的私房菜)
  19. chapter 2 古典密码技术
  20. CSDN中如何插入数学公式

热门文章

  1. apply()和call()的区别
  2. Android训练课程(Android Training) - 高效的显示图片
  3. ppt转换成pdf转换器免费版
  4. C/C++反序输出字符串总结
  5. 《Redis设计与实现》之第四章:字典
  6. PostgreSQL in 与 = any 的SQL语法异同与性能优化
  7. IOS --app微信支付
  8. JavaSE的一些基础内容
  9. 继承ViewGroup类
  10. 软考培训 - 上海2班开课剪影