创建类和使用类
先看一个例子:
class Dog():
"""模拟小狗"""
def _init_(self, name, age):
"""初始化属性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() + " rolled over!")
这是一个简单的类。
1、类的首字母大写。
2、方法_init_(): 类中的函数称为方法,而该方法是一个特殊的方法,当用类创建实例时,python都会自动运行它。它的形参中必须包含self,而且必须位于其他形参之前,它是一个指向实例本身的引用,让实例能够访问类中的属性和方法。self会自动传递,所以我们不需要传递它。
根据类创建实例
my_dog = Dog('Doudou', 6) #创建一个实例
1、访问属性
使用句点表示法访问属性。
my_dog.name
2、访问方法
my_dog.sit()
使用类和实例
1、给属性指定默认值
- 类的每个属性都必须有初始值,哪怕这是值是0或空字符串。可以在方法_init_()中指定初始值,这样就无需为它提供初始值的形参。
def _init_(self, name, age):
"""初始化属性name和age"""
self.name = name
self.age = age
self.color = 'brown' #将狗的颜色默认值设为brown
2、修改属性的值
(1)直接修改属性的值
my_dog.color = 'white' #通过对象直接修改属性的值
(2)通过方法修改属性的值
def change_color(self,color):
"""修改小狗的颜色"""
self.color = color
my_dog.change_color('red')#通过方法修改属性值
继承
一个类继承另一个类时,它将自动获得另一个类的所有属性和方法。原有的类称为父类,而新类称为子类。
1、子类的方法_init()_
创建子类的实例时,python首先要完成的任务是给父类的所有的属性赋值。
class LittleDog(Dog):
"""小型狗类继承狗类"""
def _init_(self, name, age):
"""初始化父类的属性"""
super()._init_(name,age)
2、给子类定义属性和方法
class LittleDog(Dog):
"""小型狗类继承狗类"""
def _init_(self, name, age):
"""初始化父类的属性"""
super()._init_(name,age)
self.size = 'small' #子类的属性
def play():#子类的方法
3、重写父类的方法
重写的方法要和父类同名
class LittleDog(Dog):
"""小型狗类继承狗类"""
def _init_(self, name, age):
"""初始化父类的属性"""
super()._init_(name,age)
self.size = 'small' #子类的属性
def play():#子类的方法
def sit(self):#重写父类的方法
#重写的内容
导入类
1、导入单个类
我们可以把类存储在模块中,然后从模块中导入类。
我们把Dog类放入模块dog. py中,然后使用:
from dog import Dog
2、在一个模块中存储多个类
我们可以在一个模块中存储多个类。
3、从一个模块中导入所有类
from dog import Dog,Cat,Rabbit...
4.导入整个模块
import Dog #导入模块
之后需要用句点表示法访问类:
module_name.class_name
5、导入模块中的所有类
from module_name import *
6、在一个模块中导入另一个模块
类编码风格
- 类名应采用驼峰命名法,即将类名中的每个单词的首字母都大写,而不使用下划线。实例名和模块名都采用小写格式,并在单词之间加上下划线。
- 在类中,可使用一个空行来分隔方法;而在模块中,可使用两个空行来分隔类。
- 在需要同时导入标准库中的模块和你编写的模块时,先编写导入标准库模块的import语句,在添加一个空行,然后编写导入你自己编写的模块的import语句。