栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python笔记9 类

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python笔记9 类

一、类

通过搭配类与函数,可以写出优美的封装代码
面向对象编程,编写类时,定义了一个大类的对象都有的通用行为

① 创建类

在python中 类的首字母约定俗成为大写
在python2.7中,需要在class Dog(object)中添加object
类中的所有属性在实例化时必须有初始值,可以赋0或者赋空

class Dog():
    def __init__(self, name, age):
        self.name = name
        self.age = age
        self.weight = 0

    def sit(self):
        print(self.name.title() + " is sitting now.")

    def roll_over(self):
        print(self.name.title() + " rolled over!")

    def show_weight(self):
        print(self.weight)

    def update_weight(self,weight):
        self.weight = weight
1.方法

类中的函数被称作方法
__init__是一个特殊的方法,带下划线是因为要避免和普通方法起冲突,在每个类开头都需要写这个
self为指向实例本身的引用,是自动传入参数,在类中,可以通过调用self来访问类中的属性和方法

② 根据类创建实例

类是一类事物的通用模型,可以通过通用模型来创造具体的个体

1.创建实例

可以通过类创建一系列的有相同属性与行为特征的类,比如斑点狗与田园犬

my_dog = Dog("Hans", 8)
print("My dog's name is " + my_dog.name.title() + " and its age is " + str(my_dog.age) + " years old.")
2.访问实例的属性、方法(函数)

实例有它的属性以及一些内置在类,为实例所拥有的方法(函数)

print(my_dog.name)
my_dog.sit()
3.修改属性

直接修改属性值

my_dog.weight = 30
print(my_dog.weight)

通过方法(类内函数)修改属性
这样可以方便对一些不合理的调整属性的命令,使之不能直接修改属性而需要通过方法,在方法中对修改值作限制

def update_weight(self,weight):
    self.weight = weight
二、类的继承

类可以有它的父类,子类继承了父类的所有属性与方法,同时还有自己的属性和方法
首先需要在定义子类的括号中添加父类作为参数,因为__init__方法会用到父类的信息
父类也被称为超类(super class),super()用于联系父类和子类

① 类继承的基本模式
class Dog():
    def __init__(self, name, age):
        self.name = name
        self.age = age
        self.weight = 0

    def sit(self):
        print(self.name.title() + " is sitting now.")

    def roll_over(self):
        print(self.name.title() + " rolled over!")

    def show_weight(self):
        print(self.weight)

    def update_weight(self,weight):
        self.weight = weight


class ChinesePastoralDog(Dog):
    def __init__(self, name, age):
        super().__init__(name, age)
        self.color = "Blue"

    def show_color(self):
        print(self.color)

my_dog = Dog("Hans", 8)
print("My dog's name is " + my_dog.name.title() + " and its age is " + str(my_dog.age) + " years old.")
herman_dog = ChinesePastoralDog("puper", 23)
herman_dog.show_color()
② 重写父类的方法

父类的一些方法在子类中是无效的,比如汽车需要加油,而电动汽车不需要
在子类中以父类方法同样的名称,对代码进行重写

def roll_over(self):
    print(" ChinesePastoralDog can not roll over!")

herman_dog.roll_over()
 ChinesePastoralDog can not roll over!
③ 类的嵌套:将类生成的实例用作另一个类的属性

在中华田园犬类外,另设了一个类专门用于毛色属性与毛色相关的方法,将毛色的类实例化,并将这个实例作为中华田园犬类中的一个属性,相当于类的嵌套

class ChinesePastoralDog(Dog):
    def __init__(self, name, age):
        super().__init__(name, age)
        self.color = Color()

    def color_about(self):
        self.color.present_color()

    def roll_over(self):
        print("CPD can not roll over!")

class Color():
    def __init__(self, color="Blue"):
        self.color = color

    def present_color(self):
        print(self.color)

herman_dog = ChinesePastoralDog("puper", 23)
herman_dog.color_about()
三、类模块的导入与导出

类可以单独作为一个模块,也可以多个类放在同一个模块里,处理方式与函数的模块导入导出类似
以Class_Car.py文件作为Car类及其子类的模块为例子,其中有子类 Electric Car 和 Fuel Car

① 类模块的导出

和函数一样,在定义完后保存在.py文件中

② 从类模块中调用类

调用Car类:

from Class_Car import Car

调用ElectricCar类:

from Class_Car import ElectricCar
③ 从类模块中调用多个类

调用ElectricCar类与 FuelCar类

from Class_Car import ElectricCar, FuelCar

调用Class_car.py模块文件下的所有类

import Class_Car
④ 类模块间有依赖关系的处理

当Car与Electric Car分别保存在不同模块时,如果调用Electric Car,也就是Car的子类,需要先从另一个模块调用它的父类Car

from Class_Car import Car
from Class_ElectricCar import ElectricCar
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/870907.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号