Python基础:面向对象

dic={ '001':{'name':'张三','age': 18 ,'num':'001'},
     
'002':{'name':'张二','age': 28 ,'num':'002'}}
class FileAction():
   
@staticmethod
   
def writeDate():
        f=
open("Data.txt",'w')
       
for k,v in dic.items():#解析出第一层字典例如001,{'name':'张三','age': 18 ,'num':'001'}
           
for k1,v1 in v.items():#解析出第二层字典:name  张三  age  18   num   001
               
f.write((k1+":"+str(v1)))
               
if k1=='num':
                    f.write(
'\n')
               
else:
                    f.write(
',')
        f.close()
   
@staticmethod
   
def readDate( ):
        f=
open('Data.txt','r')
        line=f.readline()
        dzd={}
       
while len(line)>0:
            items=line.strip().split(
',')#读每一句话,删除空格和\n,并用逗号隔开每个项例如[name:张三   age:18   num:001]
           
zd={}#每行定义第二层字典
           
for item in items:
                s=item.split(
':')#把每项例如name:张三   ,切成键值对,例如name和张三
               
if s[0]=='age':#如果是年龄,转换成整形
                   
zd[s[0]]=int(s[1])
               
else:
                    zd[s[
0]]= s[1]
               
if s[0]=='num':#如果是num,让其成为第一层的键
                   
dzd[s[1]]=zd
            line=f.readline()
       
print(dzd)
        f.close()
FileAction.writeDate()
FileAction.readDate()

 

 

 

 

 

 

 

#2:

class People():

    tax=0

    def __init__(self,name,age,work,salary):

        pass

        self.name=str(name)

        self.age=int(age)

        self.work=str(work)

        self.salary=int(salary)

        self.__energy=100

    def eat(self,money):

        self.__energy=self.__energy+10 if self.__energy<90 else 100

        self.salary=self.salary-money

        print(self.salary)

    def say(self):

        print(self.name)

    def working(self):

        People.tax+=self.salary*0.2

        self.__energy=self.__energy-30 if self.__energy >30 else 0

        print(People.tax)

        print(self.__energy)

    def sleep(self):

        self.__energy=self.__energy+60 if self.__energy<40 else 100

        print(self.__energy)

    def get_energy(self):

        return self.__energy

class Women(People):

    def shoping(self,money):

        self.salary-=money

        print(self.salary)

class Man(People):

    def say(self):

        print(self.name,"一个笑话")

zs=Man("张三",16,"程序员",9000)

zs.say()

zs.eat(10)

zs.working()

ls=Women("张三",14,"程序员",9000)

ls.shoping(200)

ls.sleep()

print(ls.get_energy())

# class People():

#     tax=0

#     def __init__(self,name,age,work,salary):

#         pass

#         self.name=str(name)

#         self.age=int(age)

#         self.work=str(work)

#         self.salary=int(salary)

#         self.__energy=100

#     @property

#     def ener(self):

#         self.__energy=self._energy

#         return self.__energy

#     @ener.setter

#     def ener(self, energy_x):

#         if int(energy_x) < 0:

#             self._energy = 0

#         elif int(energy_x) > 100:

#             self._energy = 100

#         else:

#             self._energy = energy_x

#     def eat(self,money):

#         self.salary=self.salary-money

#         self.__energy+=10

#         self.ener=self.__energy

#         print(self.salary)

#     def say(self):

#         print(self.name)

#     def working(self):

#         People.tax+=self.salary*0.2

#         self.__energy-=30

#         self.ener = self.__energy

#         print(People.tax)

#         print(self.ener)

#     def sleep(self):

#         self.__energy+=60

#         self.ener = self.__energy

#         print(self.ener)

#     def get_energy(self):

#         return self.__energy

# class Women(People):

#     def shoping(self,money):

#         self.salary-=money

#         print(self.salary)

# class Man(People):

#     def say(self):

#         print(self.name,"一个笑话")

# zs=Man("张三",16,"测试",9000)

# zs.say()

# zs.eat(10)

# zs.working()

# ls=Women("李四",14,"开发",12000)

# ls.shoping(200)

# ls.sleep()

# ls.sleep()

# print(ls.get_energy())

# print(ls.name)

# # print(ls.__energy)

 

 

#等腰三角形

class Paint():
   
def star(self):
        i=
1
       
while i<6:
            j=
1
           
while j<=5-i:
               
print(" ",end="")
                j+=
1
           
j=1
           
while j<=2*i-1:
               
print("*",end="")
                j+=
1
           
i+=1
           
print()
p=Paint()
p.star()

class Paint():

#     def star(self):

#         for i in range(1,6):

#             for j in range(1,6-i):

#                 print(" ",end="")

#             for j in range(1,2*i):

#                 print("*",end="")

#             print()

# p=Paint()

# p.star()

 

 

 

 

 

class Paint():

    def star(self):

        i=1

        while i<6:

            j=1

            while j<=5-i:

                print(" ",end="")

                j+=1

            j=1

            while j<=2*i-1:

                if j==1 or j==2*i-1 or i==5:

                    print("*",end="")

                else:

                    print(" ",end="")

                j+=1

            i+=1

            print()

p=Paint()

p.star()

# class Paint():

#     def star(self):

#         for i in range(1,6):

#             for j in range(1,6-i):

#                 print(" ", end="")

#             for j in range(1,2*i):

#                 if j==1 or j==2*i-1 or i==5:

#                     print("*",end="")

#                 else:

#                     print(" ",end="")

#             print()

# a=Paint()

# a.star()

 

 

 

 

 

a={  '001':{'name':'张三','age':18,'address':'北京'},

    '002':{'name':'张二','age':28,'address':'上海'},

    '003':{'name':'张大','age':38,'address':'北京'},

    '004':{'name':'张四','age':28,'address':'上海'},

    '005':{'name':'张六','age':38,'address':'北京'}

}

class StudentAdmin():

    @staticmethod

    def write():

        f=open("a.txt","w")

        f.write(str(a))

        f.close()

    @staticmethod

    def read():

        f=open("a.txt","r")

        c=f.read()

        f.close()

        print(eval(c))

        return eval(c)

StudentAdmin.write()

a=StudentAdmin.read()

while True:

    bh=int(input("编号"))

    if bh==1:

        print("增加")

        xh=input("请输入学号")

        if xh in a.keys():

            print("学号重复")

            continue

        else:

            zd={}

            zd["name"]=input("请输入姓名")

            zd["age"]=int(input("请输入年龄"))

            zd["address"]=input("请输入地址")

            a[xh]=zd

        # StudentAdmin.write()

    elif bh==2:

        print("删除")

        xh=input("请输入学号")

        if xh in a.keys():

            print("删除了",a[xh])

            del a[xh]

        else:

            print("查无此人")

            continue

        # StudentAdmin.write()

    elif bh==3:

        print("修改")

        xh=input("请输入学号")

        if xh in a.keys():

            a[xh]["name"]=input("请输入姓名")

            a[xh]["age"]=int(input("请输入年龄"))

            a[xh]["address"]=input("请输入地址")

        else:

            print("查无此人")

            continue

        # StudentAdmin.write()

    elif bh==4:

        print("查询")

        xh=input("请输入学号")

        if xh in a.keys():

            print(a[xh])

        else:

            print("查无此人")

            continue

        # StudentAdmin.write()

    elif bh==0:

        print("退出")

        StudentAdmin.write()#程序结束,先把增删改查后的值写入文件

        break#break是返回循环的开始

        #exit(0)#退出程序

 

 

 

 

class Student():

    count=0

    def __init__(self,name):

        self.name=name

        Student.count+=1

    def __del__(self):#析构函数

        Student.count-=1

        print("删除",self.name,"还剩%d个对象"%Student.count)

a=Student("张三")

b=Student("李四")

print(a.name)

print(b.name)

del a

del b

# print(a.name)#报错,因为a.name已经被删除了

 

 

 

 

 

class Num():

    def __init__(self,n):

        self.n=n

    def __add__(self, other):

        return self.n+other.n    #如a+b,a是self.n,b是other.n,如果是b+a,则b是self.n,a是other.n

    def __sub__(self, other):

        return self.n-other.n

    def __mul__(self, other):

        return self.n*other.n

    def __call__(self,num):

        return self.n*num

    def __call__(self, *args, **kwargs):

        result=self.n

        for i in args:

            result*=i

        for k,v in kwargs.items():

            result+=v

        return result

a=Num(3)

b=Num(4)

c=a+b

print(c)

d=b-a

print(d)

e=b*a

print(e)

f=a(6)

print(f)

g=a(1,2,3,4,age=13,num=12)

print(g)

 

 

 

 

 

class Car():

    obj=""

    def __new__(cls, *args, **kwargs):

        print("我在这")

        return object.__new__(Car)

    def __init__(self,name,cid):

        print("你好")

        self.name=name

        self.cid=cid

c=Car("宝马","京A88888")

print(hasattr(Car,"obj"))

print(hasattr(Car,"xx"))

 

 

 

 

 

class Car():

    def __new__(cls, *args, **kwargs):

        if not hasattr(Car,"inst"):#如果Car类中没有inst属性

            Car.inst=object.__new__(Car)#建立一个Car对象给inst属性

        return Car.inst

    def __init__(self,name,cid):

        print("你好")

        self.name=name

        self.cid=cid

a=Car("宝马","京A88888")

b=Car("奔驰","京B88888")

print(a is b)

print(a.name,a.cid)

print(b.name,b.cid)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值