第二十三天
sys.argv 回顾
# python xxx.py alex sb cp d:\内容回顾.py d:\a
# 重命名
# python 函数的相关.py alex sb rename C:/Users/Administrator/Desktop/小丁变优秀的代码/day25 C:/Users/Administrator/Desktop/小丁变优秀的代码/day22
# 创建文件夹
# python 函数的相关.py alex sb mkdir C:/Users/Administrator/Desktop/小丁变优秀的代码/day31
import sys
import os
import shutil
# print(sys.argv)
if len(sys.argv)>=5:   #至少5个指令
    if sys.argv[1]=='alex' and sys.argv[2]=='sb':
        if sys.argv[3]=='cp' and len(sys.argv)==6:
            if os.path.exists(sys.argv[4]) and os.path.exists(sys.argv[5]):
               filename=os.path.basename(sys.argv[4])
               path=os.path.join(sys.argv[5],filename)
               shutil.copy2(sys.argv[4],path)
        elif sys.argv[3]=='rm' and len(sys.argv)==5:
            pass
            print('已经删除了')
        elif sys.argv[3] == 'mkdir' and len(sys.argv) == 5:
            os.mkdir(sys.argv[4])
            print(f'我们创建了{sys.argv[4]}的文件夹')
        elif sys.argv[3]=='rename' and len(sys.argv)==6:
            if os.path.exists(sys.argv[4]):
                if os.path.isfile(sys.argv[4]):
                    os.rename(sys.argv[4],sys.argv[5])
                else:
                    shutil.move(sys.argv[4],sys.argv[5])
else:
    print('输入的命令无效')
圆 周长 面积
class yuan():
    def __init__(self,r):
        self.r=r
    def zhou(self):
        return self.r*2*3.14
    def mian(self):
        return self.r**2*3.14
c=yuan(10)
print(c.zhou())
print(c.mian())
c=yuan(5)
print(c.zhou())
print(c.mian())
类,
这个类有什么属性,用什么方法,大致的样子
不知道具体的属性对应的值
对象:之前所有的属性都明确了
(类 内置的数据类型)
python中 一切都是对象
- 
int
 - 
float
 - 
dict
 - 
str
 - 
list
 - 
tuple
 - 
set
 
python 中一切皆对象
对象的类型就是类
所有的对象都有一个类型 class A 实例化出来的对象的类型就是A类
123的类型是int/float
'asdasd' 的类型是str
{} 类型是dict
alex=Person() 的类型是Person
小白=Dog() 的类型是Dog
命名空间的问题
类中的变量 是静态变量
对象中的变量只属于对象本身 每个对象有属于自己的空间来储存对象的变量
当时有对象面去调用缪一个属性的时候会优先在自己的空间中寻找,找不到的话再从对应的类中寻找
如果自己没有就引用类的 类没有的话就报错
对鱼类来说 类中变量所有的 对象都是可以读取的 并且读取的是同一份变量
class A:
    Country="中国"
    def __init__(self,name,age,country):
        self.name=name
        self.age=age
        self.Country=country
    def fucn1(self):
        print(self)
    def func2(self):pass
    def func3(self):pass
    def func4(self):pass
    def func5(self):pass
a=A("aa",'83','a人')
b=A("bb",'83','b人')
a.country="日本人"
print(a.Country)
print(b.Country)
print(A.Country)
# a人
# b人
# 中国
class A:
    Country="中国"
    def __init__(self,name,age,country):
        self.name=name
        self.age=age
    def fucn1(self):
        print(self)
    def func2(self):pass
    def func3(self):pass
    def func4(self):pass
    def func5(self):pass
a=A("aa",'83','a人')
b=A("bb",'83','b人')
a.country="日本人"
print(a.Country)
print(b.Country)
print(A.Country)
#
# 中国
# 中国
# 中国
创建一个类
# 创建一个类
# class A:pass
# A.country=123
# print(A.country)  #属性的增加
# print(A.__dict__,type(A))  #查看或引用
初始化一个实例
b=A()
实现一个类,能够自动统计这个类的 实例化了多少个对象
class A():
    count=0
    def __init__(self,asas):
        A.count += 1
        pass
a=A('asda')
b=A('asdas')
b=A('asdas')
b=A('asdas')
b=A('asdas')
b=A('asdas')
b=A('asdas')
b=A('asdas')
b=A('asdas')
b=A('asdas')
print(A.count)
登陆问题
import  os
def login(name,password,file='userinfo'):
    with open(file,encoding='utf-8') as f:
        user,pwd=f.readline().strip().split('|')
        if name==user and pwd==password:
            return True,name
        else:
            print("密码错")
            return False
class User():
    def __init__(self,username,password):
        self.user=username
        self.pwd=password
    def change_pwd(self):
        oldpassword=input("请输入原密码")
        newpassword=input("请输入新密码")
        with open('userinfo', encoding='utf-8') as f1,open('userinfo.bak', mode="w",encoding='utf-8') as f2:
            for line in f1:
                user, pwd = line.strip().split('|')
                if user==self.user and pwd==oldpassword:
                    line='%s|%s\n'%(user,newpassword)
                f2.write(line)
        os.remove("userinfo")
        os.rename("userinfo.bak",'userinfo')
name=input('用户名')
password=input('密码')
ret=login(name,password)
if ret:
    print('登陆成功')
    cet = User(name,password)
    cet.change_pwd()
组合
作用:当你有好多期的课程
价格修改了 这时候 只用改一个值 所有的价格都更新了
方便代码修改
例
python22.course=python
python23.course=python
之前价格是2000
print(python22.course.money)
print(python23.course.money)
现在修改成3000
python.money=30000
print(python22.course.money)
print(python23.course.money)
# 学生类
# 姓名 性别 年龄 学号 班级 手机号
class Student:
    def __init__(self,name,sex,age,number,clas,phone):
        self.naem=name
        self.sex=sex
        self.age=age
        self.clas=clas
        self.phone=phone
class Clas:
    def __init__(self,cname,begint,teacher):
        self.cname=cname
        self.begint=begint
        self,teacher=teacher
爱上小丁=Clas("课程",'2019-03-12',"小丁")
小屋=Student("小屋","female",18,1,爱上小丁,13333333333)
print(小屋.clas,爱上小丁)
print(爱上小丁.begint)
# 一个类的对象是另一给类的属性
# 对象 变成了一个属性
#
# 爱上小丁 是一个对象
#
# 把他放到  小屋 这个类 里面  做一个对象
# 运用组合 将两个对象连接起来了
class Ke:
    def __init__(self,timee,kecheng,money):
        self.timee=timee
        self.kecheng=kecheng
        self.money=money
class Ban:
    def __init__(self,kecheng):
        self.kecheng=kecheng
python=Ke("100天",'python',20000)
linux=Ke("100天",'linux',10000)
python22=Ban(python)
linux11=Ban(linux)
print(python22.kecheng.money)
print(python.timee)
print(linux.money)
# 也可以这样实现
class Ke:
    def __init__(self,timee,kecheng,money):
        self.timee=timee
        self.kecheng=kecheng
        self.money=money
class Ban:
    def __init__(self,kecheng):
        self.kecheng=kecheng
python=Ke("100天",'python',20000)
linux=Ke("100天",'linux',10000)
python22=Ban('python')
linux11=Ban('linux')
python22.kecheng=python
print(python.money)
print(python.timee)
    对代码有疑问欢迎交流 
一个python爱好者 :
微信:at8685b
                    
                
                
            
        
浙公网安备 33010602011771号