Python和Java都是面向对象的语言,对象从类中获取,类指的是同一类具有相同特征的事物,比如拉布拉多,柯基,哈士奇,它们都是狗,具有狗的相同特征,所以可以被归为一类Dog,Python中类的使用与Java中有些不同。

一、创建类

创建一个Dog类

classDog():def __init__(self,name,age,color):

self.name=name

self.age=age

self.color=colordefrun(self):

self.name+"run."

defupdate_age(self,age):

self.age=agedefprint_info(self):print (self.name + ", age:" + self.age + ", color:" + self.color)

1、方法__init__()

相当于java中的构造方法,进行初始化的工作,self参数类似于java中的this关键字,selft会自动传递到当前创建的对象中,所以在创建dog对象时不需要传递。在Python类中,也可以不显示的声明__init__方法,如下例

classCat():

name="mikyi"

defset_name(self,name):

self.name=namedefget_name(self):returnself.name

cat=Cat()print(Cat.name)print(cat.name)print(cat.get_name())

cat.set_name("xiaomaomi")print(Cat.name)print(cat.name)print(cat.get_name())

上述示例中有一点需要注意,在类中直接声明的变量,使用类名.属性名方式获取到的值始终为初始化的值,但如果类中没有属性,只是在__init__方法中通过self.方法设置的属性,则不能通过类型.方式获取该属性,如上述Dog类中,有name,age,color属性,如下操作将会抛出异常

dog=('name','12','yellow')print(Dog.name)

2、对于普通方法,如run,update_age,print_info,由于使用到了当前对象的属性,也需要传递self,若未传递,在调用时会出现如下异常

二、创建实例并访问属性

创建实例

huskie=Dog('erha','2','black and white')

通过“对象名.属性名”访问属性

huskie=Dog('erha','2','black and white')print (huskie.name)

三、访问方法

huskie=Dog('erha','2','black and white')

huskie.print_info()

四、创建多个实例

huskie=Dog('erha','2','black and white')

labrador=Dog('labuladuo','3','black')

corgi=Dog('keji','4','yellow')

五、修改属性值

1、直接修改属性

huskie=Dog('erha','2','black and white')

huskie.age='7'huskie.print_info()

2、通过方法修改

上述Dog类中update_age()即为修改属性age的方法,对属性进行修改时,建议使用这种方式处理

huskie=Dog('erha','2','black and white')

huskie.update_age('5')

huskie.print_info()

六、继承

一个类继承另外一个类时,将自动获得另一个类的所有属性和方法,原有的类称为父类,新类称为子类。子类还可以定义自己的属性和方法

犬中有救生犬,导盲犬等,救生犬和导盲犬分别又可以看做是一个类,如导盲犬类

classGuideDog(Dog):def __init__(self,name,age,color,protect_master):

super().__init__(name,age,color)

self.protect_master=protect_masterdefprotect(self):print (self.name +"protect its master" + self.protect_master + "cross the road.")

guideDog=GuideDog('xiaobai','5','white','auth')

guideDog.print_info()

guideDog.protect()

1、重写父类方法

在GuideDog类中重写父类run方法

classGuideDog(Dog):def __init__(self,name,age,color,protect_master):

super().__init__(name,age,color)

self.protect_master=protect_masterdefprotect(self):print (self.name +"protect its master" + self.protect_master + "cross the road.")defrun(self):print(self.name + "run slowly.")

guideDog=GuideDog('xiaobai','5','white','auth')

guideDog.run()

调用run函数,输出的为子类中的方法的打印

2、将实例用作属性

添加一个宠物狗市场,并且打印宠物狗的售卖信息

classDogPetMarket():def __init__(self,dog,price):

self.dog=dog

self.price=pricedefget_info(self):print (self.dog.name + ", age:" + self.dog.age + ", color:" +self.dog.color+", price:" +self.price)

huskie=Dog('erha','1','blick and white')

dogPetMarket=DogPetMarket(huskie,'100$')

dogPetMarket.get_info()

python类_Python中的类相关推荐

  1. python编写ATM类_Python中编写类的各种技巧和方法

    有关 Python 内编写类的各种技巧和方法(构建和初始化.重载操作符.类描述.属性访问控制.自定义序列.反射机制.可调用对象.上下文管理.构建描述符对象.Pickling).你可以把它当作一个教程, ...

  2. python如何定义类_python中定义类

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 类的定义python中,定义类是通过class关键字,例如我们定义一个存储学生信 ...

  3. python3新式类_Python中新式类与经典类的区别详析

    1.新式类与经典类 在Python 2及以前的版本中,由任意内置类型派生出的类(只要一个内置类型位于类树的某个位置),都属于"新式类",都会获得所有"新式类"的 ...

  4. python经典类和新式类_python中经典类和新式类的区别

    在定义class的时候,有几种常见的写法,比如: class A: pass class B(): pass class C(object): pass 在python 2中查看以上各个class的类 ...

  5. 标准布局类(11中布局类)

    2019独角兽企业重金招聘Python工程师标准>>> <div class="box"><div id="myAuto" ...

  6. python中的元类_python中的元类

    类也是对象,但是类有创建对象的能力 动态创建一个类: classmonkey():defbanana(self):print 'banana!' defapple(self):print 'i wan ...

  7. python 类中定义类_Python中的动态类定义

    python 类中定义类 Here's a neat Python trick you might just find useful one day. Let's look at how you ca ...

  8. python中类和对象的内容_python中的类和对象

    摘要:本文主要介绍了python中的类和对象的基础内容.由于在c++中对类和对象已经有了较为深刻的认识,所以此部分就是主要熟悉一下创建方法和使用方法. 1.类.对象的创建和简单使用 主要观察创建类的方 ...

  9. python中文件分类_Python中的类是否在不同的文件中?

    在Python中,一个文件称为 module.一个模块可以由多个类或函数组成. 由于Python不仅仅是一种OO语言,所以没有规则说明,一个文件只能包含一个类. 一个文件(模块)应该包含属于一起的类/ ...

最新文章

  1. 揭秘全球首次互联网8K直播背后的技术实现
  2. DayDayUp:哈哈,你上榜了嘛?界面新闻发布2020年中国最富1000人榜,总财富增加28%
  3. 使用rancher创建负载均衡服务
  4. java消息顺序执行_Apache Flink:如何并行执行但保持消息顺序?
  5. windows server搭建php mysql数据库_windows server 2008/2012安装php iis7 mysql环境搭建教程...
  6. c语言标准库assert,C 标准库 - assert.h
  7. Python编程 - 不调用相关choose库函数,“众数“挑选器、随机挑选器 的源码编程实现
  8. linux下重新分区、数据备份相关(parted、dd等命令)
  9. 遗传算法是机器学习算法嘛?_基于遗传算法的机器人控制器方法
  10. sqlserver 2008完整安装教程
  11. 【Windows远程桌面】RDP Wrapper 监听器状态为 Not listening [not supported] 的解决方法
  12. php js轮播图片代码,js图片轮播手动切换效果实例代码
  13. js 数字转为罗马数字(互转换),I 、II 、 III 、IV、V
  14. 海外游戏广告投放操作技巧
  15. Json转对象失败:No suitable constructor found for type [simple type, class com.test.faster.domain.respons
  16. 使用 HTML CSS 和 JavaScript 创建星级评分系统
  17. 几个非常好用的CMD命令
  18. Centos 7搭建SNORT
  19. EOS智能合约与DApp开发入门
  20. 大话设计模式之装饰模式(python实现)

热门文章

  1. 倒序排序_排序算法(六):Counting Sort 计数排序
  2. Git的简单使用以及在Django中有关日志文件的忽略
  3. leetcode最长无重复子串384题
  4. 分享一些user-agent(移动端和PC端都有)
  5. 《编译原理》第二章知识点
  6. 深入理解 Java 泛型擦除机制
  7. wxWidgets:wxPowerEvent类用法
  8. wxWidgets:wxFTP类用法
  9. wxWidgets:wxSizer
  10. boost::python::dict相关的测试程序