python基础教程之 类

本文详细介绍了面向对象编程中的类、self概念,如何创建和初始化类,以及类的属性赋值、修改、继承、重写方法和导入类的方式。包括实例化、属性的默认值设定、通过方法修改属性,以及Python中的继承结构和导入类的最佳实践。
摘要由CSDN通过智能技术生成

本文将讲述:
面向对象编程:类self、继承 super、导入类

1.关于类

1.1创建类

类是蓝图,依照类创建对象(实例化):

class Cat():
    #模拟小猫咪
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def sit(self):
        print(self.name+' now is sitting')

mycat=Cat('Lily',23)
print('Its name is '+mycat.name)
mycat.sit()

1.类默认首字母大写,类括号为空的
2.__ init__ 创建新类的默认方法,自动传入实参self:指向实例本身的引用,为了访问类中的属性和方法
3.self.name=name 获取存储在形参name中的值,存储到变量name中。可通过实例访问的变量就是属性
结果:

Its name is Lily
Lily now is sitting

python2.7
class Dog(object):

1.2给属性指定默认值

例子:self.number=123

class Cat():
    #模拟小猫咪
    def __init__(self,name,age):
        self.name=name
        self.age=age
        self.number=123
    def sit(self):
        print(self.name+' now is sitting')

mycat=Cat('Lily',23)
print(str(mycat.number)+' Its name is '+mycat.name)

结果

123 Its name is Lily

1.3修改属性值

1.3.1直接修改

class Cat():
    #模拟小猫咪
    def __init__(self,name,age):
        self.name=name
        self.age=age
        self.number=123
    def sit(self):
        print(self.name+' now is sitting')

mycat=Cat('Lily',23)
mycat.name='Emma'
print(mycat.name)

结果:Emma

1.3.2 通过方法修改

class Cat():
    #模拟小猫咪
    def __init__(self,name,age):
        self.name=name
        self.age=age
        self.number=123
    def sit(self):
        print(self.name+' now is sitting')
    def changename(self,name):
        self.name=name

mycat=Cat('Lily',23)
mycat.changename('Julia')
print(mycat.name)

结果:Julia

1.3.3通过方法对属性的值进行递增

class Cat():
    #模拟小猫咪
    def __init__(self,name,age):
        self.name=name
        self.age=age
        self.number=123
    def agechange(self,age,year):
        self.age+=year
mycat=Cat('Lily',23)
mycat.agechange(23,3)
print(mycat.age)

结果:26

2.继承

2.1一次继承

继承:编写的类是一个现成类的特殊版本。子类继承父类,子类自动获得父类的所有属性和方法,也可定义自己的属性和方法
注意事项:
1.创建子类时,父类必须包含在当前文件中,且位于子类的前面
2.定义子类时,必须在括号内中指定父类的名称
3.子类方法__init__接受创建父类实例所需的信息
例子
4.super()关联子类和父类,使子类实例包含父类的所有属性。父类又称超类superclass

class Cat():
    #模拟小猫咪
    def __init__(self,name,age):
        self.name=name
        self.age=age
        self.number=123
    def agechange(self,age,year):
        self.age+=year

class DragonliCat(Cat):
    def __init__(self,name,age):
        super().__init__(name,age)

mycat=DragonliCat('Lily',3)
print(mycat.age)

结果:3

2.2给子类定义属性和方法

class Cat():
    --snip--#同上
class DragonliCat(Cat):
    def __init__(self,name,age):
        super().__init__(name,age)
        self.color='grey'#子类特有的新属性
    def print_color(self):
        print('it is '+self.color)
mycat=DragonliCat('Lily',3)

DragonliCat.print_color(mycat)

运行结果

it is grey

2.3重写 父类的方法

定义一个方法与要重写的父类方法同名

class Cat():
 --snip--

class DragonliCat(Cat):
    def __init__(self,name,age):
        super().__init__(name,age)
        self.color='grey'
    def print_color(self):
        print('it is '+self.color)
    def agechange(age):
        age+=age
        print(age)
mycat=DragonliCat('Lily',4)

DragonliCat.agechange(3)

结果:6

2.4 将实例用作属性

创建猫咪一个实例:体型大小size作为狸花猫DragnliCat的属性
mycat.size.print_size()

class Cat():
    #模拟小猫咪
    def __init__(self,name,age):
        self.name=name
        self.age=age
        self.number=123
    def agechange(self,age,year):
        self.age+=year

class Size():
    def __init__(self,size=1):
        self.size=size
    def print_size(self):
        print(self.size)
class DragonliCat(Cat):
    def __init__(self,name,age):
        super().__init__(name,age)
        self.color='grey'
        self.size=Size()
mycat=DragonliCat('Lily',4)
mycat.size.print_size()

结果:1

3.导入类

3.1导入单个类

from 模块名(文件名) import 类名

3.2导入多个类

from 模块名(文件名) import 类名1,类名2

3.3 导入整个模块

import 模块名

3.4 导入模块中的所有类

from 模块名 import *
不建议:1.没有明确指明使用了哪些类。
2.如果导入与程序文件同名的类会出错

3.5开发建议

先在文件中尝试完成所有工作,然后将类移动到独立模块。也可以一开始就在独立模块中放类。
命名注意逻辑而不是关注英语语法。

3.6 python标准库

Python标准库是一组模块,安装的Python都包含它,直接import使用

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值