【有书共读05】《Python编程》读书笔记08
一、创建类
先看一个简单的例子
#coding:utf-8 #例子1 class Dog(): """docstring for Dog""" def __init__(self, name , age): '''初始化属性name和age''' self.name = name self.age = age def sit(self): '''小狗蹲下的动作''' print(self.name.title() + " is now sitting.") pass def roll_over(self): '''模拟小狗打滚''' print(self.name.title() + " is rolling over.") pass
学过面向对象变成的同学都知道类有属性和方法,在python中的类也是这样,当然还是有许多差别的。
在python中,类名的首字母一般大写,与其他变量区别。
1、方法 init()
类中的函数成为方法(敲黑板,这点不要叫错了,当然和函数的用法没太大区别,主要是调用方式不同)
在类中,方法init—()是一个特殊的方法,每当我们用类来创建实例时,python都会自动运行它。在这个方法名称中,开头和结尾各有一个下划线,这是一种约定,旨在避免python默认方法和普通方法产生名称冲突。
看例子中,方法_init()有3个形参,分别是self、name、age。
形参self是必不可少的,还必须位于其他形参的前面
为什么要这么做呢?
python用init()创建实例时,将自动传入实参self。每个与类相关联的调用都自动传递self,它是一个指向实例本身的引用(类似Java中的this),让实例能够访问类中的属性和方法。
但是在初始化一个实例的时候,不需要给self传递实参!!!
self.name = name self.age = age
这两个变量都有前缀self。以self为前缀的变量都可供类中的所有方法使用,我们还可以通过类的任何实例来访问这些变量。self.name = name 获取存储在形参name中的值,并将其存储到变量name中
其实简单来说,有self前缀的变量与Java中的成员变量类似,可以被成员函数(python类中的方法)访问。
也可以给
二、根据类创建实例
#coding:utf-8 #例子2 #类定义是上面的例子,就不重复贴了 #创建实例 mydog = Dog('DaHuang' , 3) mydog.sit() mydog.roll_over()
1、初始化一个实例
格式如下
实例名 = 类名(实参1,实参2 ...)
在例子2中,我们初始化了一个名为mydog的实例。当程序执行到这行代码时,python会自动调用init()方法,用‘DaHuang’ 和 3 的值来设置属性name和age。方法init()并不显式地包含return语句,但是python自动返回一个表示这条小狗的实例。
2、访问属性
访问实例的属性,可使用句点表示法。
mydog.name
这样就可以访问实例属性的值了
3、调用方法
调用实例方法,也是通过句点表示法。
mydon.sit() mydog.roll_over()
方法sit()中没有形参(不考虑self的话),如果类中的方法有形参,可以在调用时给其传递实参。