类,对象属性 对象,类,静态方法

#文件a.txt的内容把里面所有的能被5 或者7整除的数 输出
#切片

f=open('b.txt','r')
c=f.readlines()#把所有行读到列表
for line in c:#解析列表
    if line[-1]=='\n':#如果次行子符最后一字符为‘\n'
        t=line[:-1]#去掉最后一个字符|
    else:
        t=line#如果是最后一行,那么没有\n
    list=t.split(',')#对字符串进行切片
    for x in list:#对列表解析
        if int(x)%5==0 or int(x)%7==0:#将字符串元素转化为int
            print(x)
f.close()

#2
#eval

fr=open('b.txt','r')
a=fr.readline()#行
while len(a)>0:
    for d in eval(a):
        if  d%5==0 or d%7==0:
            print(d)
    a=fr.readline()
fr.close()
#eval 方法二
a=fr.read()
b=eval(a)#一个一个
i=0
while i<len(b):
    if b[i]%5==0 or b[i]%7==0:
    	print(b[i],end='   ')
 i+=1
fr.close()

#eval运用

f=open('b.txt','r',encoding='utf-8')
a=eval(f.readline())
print(a,type(a))
a=eval(f.readline())
print(a,type(a))
a=eval(f.readline())
print(a,type(a))
a=eval(f.readline())
print(a,type(a))
print(a['l'],type(a['l']))
f.close()

#类 class

class student():
    id=0
    name=''
    address=''
    def say(self):
        print(self.id,self.name,self.address)
zs=student()
zs.id=1001
zs.name='张三'
zs.address='山东'
zs.say()
ls=student()
ls.id=1002
ls.name='李四'
ls.address='北京'
ls.say()

#init

class student():
    count=0#类属性
    def __init__(self,name,age):#对象属性
        self.name=name
        self.age=age
        self.xg='小狗'
        student.count+=1
zs=student('张三',18)
print(zs.name,zs.age,zs.xg)#用对象访问的叫对象属性

ls=student('李四',20)
print(ls.name,ls.age,ls.xg)

print(student.count)#用类名访问的叫 类属性

#对象属性可以随意添加
#对象属性的扩展【体现不出 面对对象的封装特性】

class student():
    def __init__(self,name):
        self.name=name
    def say(self):
        print(self.id,self.sex)
zs=student('张三')
zs.id=1001
zs.sex='男'
zs.say()

#对象属性的添加

class student():
    def __init__(self,name):
        self.name=name
    def say(self):
        print(self.name,self.id,self.sex)
    def h(self):
        self.id=1001
        self.sex='男'
zs=student('张三')
zs.h()
zs.say()

#对象属性两种不同的添加方法

class student():
    def say(self,name):
        self.name=name#为对象添加name属性
    def h(self):
        print(self.sex)#打印对象属性sex的值
zs=student()
zs.say('张三')
print(zs.name)
zs.sex='男'
zs.h()

#可以体现python的封装性,所以一般用 【正规】

class student():
    count = 0#类属性
    def __init__(self,name,age,sex):#初始化
        self.name=name#增加name属性
        self.age=age
        self.sex=sex
    def say(self):
        print(self.name,self.age,self.sex)
zs=student('张三',18,'男')
ls=student('李四',20,'男')
zs.say()
ls.say()

#删除私有属性

class student():
    count=0
    def __init__(self,name,age,sex):#初始化
        self.name=name#增加name属性
        self.age=age
        self.sex=sex
        student.count+=1
zs=student('张三',18,'男')
ls=student('李四',20,'男')
ww=student('王五',23,'女')
zs.count=10#给张三定义了一个私有属性【先使用对象属性(私有),再使用类属性(公有)】
delatta(zs,'count')#删除zs的私有属性
print(student.count)
print(zs.count)
print(ls.count)

#delatta 【删除属性】

class student():
    def __init__(self,name):
        self.name=name
zs=student('张三')
print(zs.name)
delattr(zs,'name')#删除zs的name属性
print(zs.name)#name属性删除 所以不会输出name属性,报错。

#对象,类方法

class student():
    count=5
    def __init__(self,name):#对象方法调用的为对象
        self.name=name
        print(self.name)
    @classmethod#修饰 提醒下面为类方法
    def lff(cls):#调用的为类 ;类 相当于 student
        print(cls.count)
    def hh(self):
        print(self.name)
zs=student('张三')
student.lff()
zs.lff()#对象可以调用类方法,类方法不可以调用对象方法
#student.hh()#报错

#静态方法

class student():
    count=5
    def __init__(self,name):#对象方法调用的为对象
        self.name=name
    @staticmethod#修饰 提醒下面为类方法
    def hs():
        print('我只一个方法,跟类和对象没有一点关系')
zs=student('张三')
student.hs()
zs.hs()#对象 与 类 都可以调用静态方法

#对象方法【对象调用】 类方法【对象 ,类调用】 静态方法【对象 ,类调用】

class student():
    count=5
    def __init__(self,name,n):#对象方法
        self.name=name
        print(self.name*n)
    @classmethod#类方法
    def cmethod(cls,cs1,cs2):
        print(cls.count*cs1*cs2)
    @staticmethod#静态方法
    def smethod(cs1,cs2):
        print(cs1*cs2)
    def omethod(self,n):#对象方法
        print(self.name*n)
zs=student('张三',2)
student.cmethod(3,4)
student.smethod(3,4)
zs.omethod(2)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值