python 类
来源:互联网 发布:服装设计淘宝 编辑:程序博客网 时间:2024/04/23 15:12
因为以前学习过c语言,而且python的控制语句和数据结构也不太复杂,所以就先从不太熟悉的类开始记录了。本笔记的内容是基于《python编程:从入门到实践》这本书。
1、创建和使用类
类表示一类东西,比如我们创建一个小狗类,它表示的一切小狗。
它其中包括狗的名字和年龄和两种狗的行为。
创建过程如下:
class Dog(): def _init_(self,name,age): self.name = name self.age = age def sit(self) print(self.name.title() + "is now sitting"): def roll_over(self) print(self.name.title() + "roller over"):
在这里要申明的是,在类中的函数叫做方法。
_init_ 是类中一个特殊的方法,在类中的函数就叫做方法。
在_init_方法中,第一个形参是self,self这个形参的作用是当某个实例被创建时,self会指向具体实例,在我的理解中,self就相当于一个指向实例的指针,有着传递具体实例信息的作用,但要注意的是,self是自动传递的,并不需要我们自己赋值。当我们根据一个类来创建实例时,只需要给出后面的参数就可以了。
self.name 和self.age可以获取形参name和age的值并存储到变量name 和age中去,这两个变量会与实例相关联,像这种可以通过实例访问的变量就叫做属性。
Dog类中还定义了另外两个方法,这两个方法并不需要额外的信息,因此它只有一个形参self指向实例本身。
至于调用属性和调用方法就比较简单了,直接用
实例名.属性调用属性
实例名,方法()来调用方法
2、使用类和实例
先来写一个关于汽车的类
class Car(): def _init_(self,make,model,year): self.make = make self.model = model self.year = year self.odometer_reading = 0 def get_descripitive_name(self): long_name = str(self.year) +' '+ self.make + ' ' + self.model
我们要修改这个类的属性值有两种方法:
第一、直接修改
实例名.属性名 = 要修改的值
例如:
my_car = Car('audi','a4',2016)my_car.odemeter_reading = 23
第二、通过方法修改
def _init_(self,make,model,year): self.make = make self.model = model self.year = year self.odometer_reading = 0 def get_descripitive_name(self): long_name = str(self.year) +' '+ self.make + ' ' + self.model
def update_odemeter(self,mileage)
self.odometer_reading = mileage
然后通过调用方法就可以修改属性的值了。
3、继承
编写类的时候不一定要从空白开始写起,如果要编写的类是一个已经写好的类的子类,可以用继承,它将自动获得父类的所有属性和方法。
创建方法如下:
class ElectricCar(Car): def _init_(self,make,model,year): super()._init_(make,model,year)super()是一个特殊的函数,帮助python将父类和子类关联起来。
当父类的方法不符合子类的行为规范时,可以对其重写,其实在我的理解中就是在子类中定义一个名称相同的方法,那么python将不会考虑父类中的这个方法,而只关注在子类中的这个方法。
写的很不详细,有很多知识懂了,但是没办法表达出来OTZ。。。
阅读全文
0 0
- python类
- Python 类
- PYTHON类
- Python类
- python类
- python 类
- Python类
- python 类
- python 类
- Python 类
- python 类
- python类
- Python-类
- Python类
- python 类
- python 类
- python 类
- python类
- Android事件分发机制
- Java+Selenium3框架设计准备篇4-TestNG实现DDT(2)
- 使用jsoup获取页面元素
- R语言报告 单因素方差分析
- Codeforces Round #422 (Div. 2) 解题报告
- python 类
- 希尔排序
- Leetcode OJ 73 Set Matrix Zeroes [Medium]
- asp.net 快速简单的导出数据 DataTable导出到Excel、GSV
- hdu 2642 Stars(二维数组 单点更新 区间查询)
- C#深度拷贝,浅拷贝
- string and stringstream(1)
- Linux系统-git分支相关操作
- jsp页面中文乱码问题