python——面向对象(二)

"""""
类成员:

一.字段
1.普通字段:保存在对象中,执行只能通过对象访问
2.静态字段:保存在类中,执行可以通过类 也可以通过对象访问
他们的区别在于静态对中间人所共有的部分更加便利
如果不进行更改可以理解为一个全局变量

二.方法
1.普通方法:保存在类中,由对象来调用,默认有self参数,它指对象
2.静态方法:保存在类中,由类直接调用
 静态方法使用可以不用建立内存,这样可以不用建立对象 直接进行访问
3.类方法:保存在类中,由类直接调用,默认有cls参数,它对应当前类
类方法与静态方法没有太大的区别 可以将类方法看为静态方法的变种

应用场景:
如果对象中需要保存一些值,执行某功能时,需要使用对象中的值->普通方法
不需要任何对象中的值,用静态方法
"""
#字段案例:
class Province:
    coutry='中国'
    #静态字段,属于类 不属于方法 所以写静态字段直接写在类里
    def __init__(self,name):
        self.name=name
        #self.coutry='中国'
        #普通字段
        #用静态字段就不用每个省存一个中国了
print(Province.coutry)

#方法案例:
class Foo:
    def bar(self):#普通方法
        #self是对象
        print('bar')
    @staticmethod
    def sta():#静态方法
        print('123')
    @staticmethod
    def sta1(a1,a2):#静态方法带变量
        print(a1,a2)
    @classmethod
    def classmd(cls):
        #cls是类名
        print(cls)
        print('classmethod')

Foo.sta()
#123
Foo.sta1(1,3)
#1 3
Foo.classmd()
#<class '__main__.Foo'>
#classmethod

"""""
类的属性

"""

#案例
class Foo:
    @property
    def ang(self):
        print('abc')
        return 1

    @ang.setter
    def angg(self, val):
        print(val)

obj=Foo()
r=obj.ang#abc#z这样调用不用加括号
print(r)#1

obj.angg=123#123
#将其改为123

#利用类的属性 进行分页
class Pergination:
    def __init__(self,current_page):
        try:
            p=int(current_page)
        except Exception as e:
            p=1
        self.page=p
    @property
    def start(self):
        val=(self.page-1)*10
        return val
    @property
    def end(self):
        val=(self.page)*10
        return val

li=[]
for i in range(1000):
    li.append(i)

while True:
    p=input('输入查看的页码:')
    obj=Pergination(p)
    print(li[obj.start:obj.end])

 

posted @ 2019-09-06 21:43  zzzi  阅读(165)  评论(0编辑  收藏  举报