学习笔记☞python 基础☞sys模块and面向对象编程 ☞python3


标准输入输出文件

    sys.stdin       (standared input)
    sys.stdout      (stardared output)
    sys.stderr

    模块名:sys


说明:
    每一个python程序启动后都会有以上三个文件已经打开供我们使用
示例:
# 此程序示意 标准输出sys.stdout 和 标准错误输出sys.stdert
import sys

sys.stdout.write('hello world\n')
# 等同于 print('hello world',end='\n')

# 以下程序会出错
# sys.stdout.close()
# print('程序结束')

sys.stderr.write('我的出现是个错误\n')


import sys
# 此示例示意sys.stdin的用法
print('请开始输入')
# s=sys.stdin.read(10)    #默认从键盘获取数据
# print(s)
# s2=sys.stdin.read(10)
# print(s2)
s=sys.stdin.read()
print('你刚才输入的是:',s)
Linux下Ctrl + D 输入文件结束

面向对象编程

    类 class 和 对象 object
    函数调用:面向过程编程

什么是对象:
    对象是指现实中的物体或示例

什么是面向对象:
    把一切看成对象(示例),对象和对象之间用方法(行为)建立关联关系

什么是类:
    拥有相同属性和行为的对象分为一组,既为一个类
    类是用来描述对象的工具

面向对象的示意:
    车(类)--------->> BYD E6(京A88888) 对象(实例)
         \
          \------->> BMW X5(京B00000) 对象(实例)

    狗(类)--------->> 小京巴(户籍号:00001)
         \
          \------->> 导盲犬(户籍号:00002)

    int(类)--------->> 100(对象)
         \
          \------->> 200(对象,实例)
类的创建语法:
    class 类名(继承列表):
        '''类文档字符串'''
        实例方法(类内的函数methd) 的定义
        类变量(class variable) 定义
        类方法(@classmethod)定义
        静态方法(@staricmethod)定义

类的作用:
    可以用类创建一个或多个此类的对象(实例)
    类内的变量和方法能被此类多创建的所有实例所共同拥有

说明:
    类名必须是标识符(与变量名命名规则相同,建议首字母大写)
    类名实质上就是变量,他绑定一个类实例
    类的定义最后面要加两个空格以告诉解释执行器,类的定义已经结束

示例:
   
class Dog:
    pass
术语:

  类              对象              实例

class           object          instance

构造函数:
    构造函数的调用表达式
        类名([创建传参列表])
        []里的内容代表可以省略
    作用:
        创建这个类的实例对象,并返回此实例对象的引用关系
示例:
class Dog:    # 定义一个类
    pass
dog1=Dog()      # 用类创建一个对象用dog1绑定
print(dog1)     # 打印dog1所在的内存地址
dog2=Dog()      # 创建第二个对象用dog2绑定
print(dog2)
print(dog1 is dog2) #判断两只狗是不是同一条狗
实例说明:
    实例有自己的作用域或名字空间,可以为该实例添加实例变量(也叫属性)
    示例可以调用类的方法
    示例可以访问类中的类变量

实例变量(属性 attribute)
    每个实例可以有自己的变量,称为实例变量(属性)
属性的使用语法:
    实例.属性名
属性的赋值规则:
    (同变量规则相同)
    1、首次为属性赋值则创建此属性
    2、再次为属性赋值则改变属性的绑定关系
示例:
class Dog:        # 定义一个类
    pass
dog1=Dog()
dog1.kinds='京巴'     #为dog1绑定的实例添加kinds属性
dog1.color='白色'     #添加属性
print(dog1.kinds,dog1.color) #访问变量
dog1.color='黄色'     #修改dog1.color的绑定关系
print(dog1.color)
练习:
'''
自己写一个student类,此类的对象有属性name,age,score,用来保存学生的姓名,年龄,成绩
1)写一个函数input_student读入n个学生的信息,用对象来存储这些信息(不用字典),并返回对象的列表
2)写一个函数output_student 打印这些学生信息(格式不限)
示意:
class Student:
    pass
def input_student():
    pass#获取学生信息
def output_student():
    pass#打印学生信息
def main():
    L= input_student()
    output_student()
main()
'''


class Student:
    pass


def input_student():
    L = []
    while True:
        name = input('请输入学生姓名:')
        if not name:
            break
        age = input('请输入学生年龄:')
        score = input('请输入学生成绩:')
        stu = Student()
        stu.name = name
        stu.age = age
        stu.score = score
        L.append(stu)
    return L


def output_student(stu):
    for i in stu:
        print('姓名',i.name,'年龄', i.age,'成绩', i.score)


def main():
    L = input_student()
    output_student(L)


main()
删除属性:
    del 语句 (可以删除类别的元素,集合里的元素,字典里的键,对象的属性)
    语法:
        del 对象.属性名
示例:
class Student:
    pass
stu = Student()
stu.name = 'xiaozhang' #创建属性
print(stu.name)
del stu.naem    # 删除此属性
print(stu.name) #属性错误,因为属性已经不存在了
实例方法 method
    语法:
        class 类名(继承列表):
            def 示例方法名(self,参数1,参数2,...)
                语句块

    作用:
        用于描述一个对象的行为,让此类型的全部对象都拥有相同的行为

    说明:
        实例方法的实质是函数,是定义在类内的函数
        实例方法的第一个参数代表调用这个方法的实例,一般命名为'self'

实例方法的调用语法:
    实例.实例方法名(调用参数)
    或
    类名.实例方法名(实例, 调用参数)

示例:
# 本示例示意实例方法的定义和调用方法
class Dog:
    '''这是一个类,用于描述一个小动物的行为'''

    def eat(self, food):
        '''小狗能够有吃东西的行为'''
        print('小狗吃了', food)

    def sleep(self, hour):
        print('小狗睡了', hour, '小时')


# 实例.实例方法名(调用参数)
dog1 = Dog()  # 创建一个实例对象
dog1.eat('骨头')  # 让狗吃东西
dog1.sleep(1)  # 让狗睡觉

dog2 = Dog()  # 再创建一个实例对象
dog2.eat('包子')
dog2.sleep(2)

# 类名.实例方法名(实例, 调用参数)
dog3 = Dog()
Dog.eat(dog3, '狗粮')
Dog.sleep(dog3, 3)
初始化方法:
    作用:
        对新创建的对象添加属性等必须的资源
    语法:
        class 类名:
            def __init__(self[,参数列表]):
                语句块
            []代表其中内容可以省略
    说明:
        初始化方法名必须是__init__不可改变
        初始化方法会在构造函数创建实例后自动调用,且将实例自身通过第一个参数self传入__init__方法
        构造函数的实参将通过__init__方法的参数列表传到__init__方法中
        初始化方法内如果要return语句返回,则必须返回None
示例:
# 此示例示意初始化方法的定义方式和调用过程
class Car:
    '''小汽车类'''

    def __init__(self, c, b, m):
        self.color = c  # 颜色
        self.brand = b  # 品牌
        self.model = m  # 型号
        self.wheel = 4
        print('__init__方法被调用')

    def run(self, speed):
        print(self.color, '的', self.brand, self.model,
              '正在以', speed, '公里/小时的速度行驶', sep='')

    def change_color(self, c):
        self.color = c


a4 = Car('红色', '奥迪', 'A4')
a4.run(199)
a4.change_color('白色')
a4.run(280)

x5 = Car('蓝色', '宝马', 'X5')
x5.run(188)
析构方法:
    语法形式:
        class 类名:
            def __del__(self):
                语句块
    作用:
        在对象被销毁之前被调用,主要负责清理对象所占用的资源
    说明:
        python建议尽可能少的在析构方法内做事情,因为销毁时间难以确定
示例:
class FileMange:
    '''定义一个文件管理员类'''

    def __init__(self, filename='a.txt'):
        self.file = open(filename, 'w')

    def writeline(self, string):
        self.file.write(string)
        self.file.write('\n')

    def __del__(self):
        '''析构方法会在销毁前调用'''
        self.file.close()
        print('文件已关闭')


fm = FileMange('嗷嗷.txt')
fm.writeline('hello world')
fm.writeline('这是中文写的第二行')
预置的实例属性:
    __dict__属性:
        用于绑定一个存储此实例自身变量的字典
    __class__属性:
        用于绑定创建此实例的类
示例:
class Dog:
    pass
dog1=Dog()
print(dog1.__dict__)    #{}
dog1.color='白色'
print(dog1.__dict__)    #{'color': '白色'}
print(dog1.__class__)   #<class 'Dog'>
用于类的函数:
    isintance(obj,class_or_tuple)
        返回这个对象obj是否是某个类的对象,或者某些类中的一个类的对象,如果是则返回True,否则返回False
    type(obj)
        返回对象的类

示例:
>>> class A:
...     pass
>>> a=A()
>>> isinstance(a,A)
True
>>> isinstance(a,int)
False
>>> isinstance(a,(A,int))
True

对象:

    属性(对象所拥有的名称)    用实例变量存储
    行为(对象拥有的动作)     用方法表示




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值