Python( 九)类

作者: Tester_Jingel | 来源:发表于2017-11-28 17:36 被阅读3次

    注:在类中中函数称为方法,属性对应函数中的形参
    知识链接:
    https://www.crifan.com/summary_the_meaning_of_self_and___init___in_python_and_why_need_them/
    1、init() 特殊方法:类的初始化方法
    注:前后两个下划线

    2、self参数(self是个object)
    没有添加self.name,name此处的name就是该函数下的局部变量
    在类的代码(函数)中,需要访问当前的实例中的变量和函数的,即,访问Instance中的:
    ----对应的变量(property):Instance.ProperyNam,去读取之前的值和写入新的值
    ----调用对应函数(function):Instance.function(),即执行对应的动作
    而需要访问实例的变量和调用实例的函数,当然需要对应的实例Instance对象本身
    而Python中就规定好了,函数的第一个参数,就必须是实例对象本身,并且建议,约定俗成,把其名字写为self

    3、创建类------class(object) Python2.7中定义类中最好填写object(类的实例化的对象)

    class User():
        def __init__(self,username,password):
            self.username = username
            self.password = password
            print "the" + username.title() +"'s password is "+ " "+password
    
    user_login = User("Tester Jingel","123456") #调用类
    

    4、属性值操作
    (1)给属性值默认值
    class User():
    def init(self,username,password):
    self.age = 10
    (2)修改属性值
    ----直接修改
    self.age = 20
    ----通过方法修改属性值
    def update(self,age):
    self.age = 30
    ----通过方法对属性值进行递增修改
    def update(self.ages):
    self.age +=ages

    5、类的继承
    Python2.7中对于父类中要填写object-----class Demo(object),不然继承运行时报错
    TypeError: super() argument 1 must be type, not classobj

    Python3继承:super().init(属性值1,属性值2......属性值n)
    Python2.7继承:super(子类名,对象self).init(属性值1,属性值2......属性值n)

    class Demo(object):
        def __init__(self,username,age):
            self.username = username
            self.age = age        
        def user_message(self):
            print "username is "+self.username+"and  age is "+str(self.age)    
        def useless(self):       #------对应重写父类方法8
            print "this is useless hanshu"
            
    prt = Demo(‘Tester Jingel’ ,23)
    prt.user_message()
    Prt.useless()
    
    class Demo2(Demo):
        def __init__(self,username,age):
            super(Demo2,self).__init__(username,age)
            
        def descripe(self):      #子类定义属性个和方法6
            self.pwd = 222222
            print self.pwd
        def useless(self):       #------对应重写父类方法8
            print 'hello'
    
    print '\n'
    prt2 = Demo2(‘Tester Jingel’ , 23)
    prt2.user_message()
    prt2.descripe()
    prt2.useless()
    

    6、子类定义属性和方法

    即在子类下定义自己的属性和方法即可

    7、重写父类的方法
    即父类下的方法有一个userless()的方法,在子类下面新建一个相同名称的方法,即可重写父类的该方法了。
    8、导入类
    from demo import Demo,Demo2
    倒入整个模块 :Import demo
    导入模块的所有类:from demo import *

    掷骰子案例:

    from random import randint
    class Die():
        def __init__(self,sides=6):
            self.sides = raw_input(u'输入筛子的面数,不输入就默认值\n')
        def rol_die(self):
            print '这个骰子的面数是:'.decode("utf-8")+" "+ str(self.sides)
            i =1
            num = input(u'输入筛子数量最大值(必须输入)\n')
            while i <=10:
                x = randint(1,num)
                print "掷出的筛子点数是:" +" "+str(x)
                i+=1
    dies = Die()
    dies.rol_die()
    

    输出结果:

    输入筛子的面数,不输入就默认值
    6
    这个骰子的面数是: 6
    输入筛子数量最大值(必须输入)
    6
    掷出的筛子点数是: 6
    掷出的筛子点数是: 5
    掷出的筛子点数是: 3
    掷出的筛子点数是: 6
    掷出的筛子点数是: 3
    掷出的筛子点数是: 5
    掷出的筛子点数是: 2
    掷出的筛子点数是: 6
    掷出的筛子点数是: 4
    掷出的筛子点数是: 2
    

    相关文章

      网友评论

        本文标题:Python( 九)类

        本文链接:https://www.haomeiwen.com/subject/mvuebxtx.html