01.14 - 类中添加属性和方法

2019-01-14  本文已影响0人  xxxQinli

添加方法

重写方法

在子类中重新实现父类的方法

类中函数的调用过程

回到函数声明的位置:先看当前类中是否有方法,如果有就直接调用,如果没有就去看父类中有没有这个方法。一直向上找到object,如果还是没有,则崩溃报错

添加属性(类的字段与对象属性)

  1. 类的字段
    直接在子类中声明新的字段
  2. 添加对象属性:
    对象的属性其实是通过继承init方法继承下来的
    在子类的init方法要用super().init(),来继承父类的属性,不加的话会重新覆盖掉父类中的方法
class Ql_Person(object):  # 
    """ 
    类说明文档:
    """
    num = 61

    def __init__(self, name = '', age = 0, sex = '男'):
        """
        函数说明文档:
        """
        self.name = name
        self.age = age
        self.__sex = sex 

    def ql_Eat(self, food):  #
        """
        函数说明文档:
        """
        print('%s在吃%s' % (self.name, food))
    
    @classmethod
    def ql_Show_Num(cls):  #
        """
        函数说明文档:
        """
        print('人类数量%s' % cls.num)

class Ql_Stu(Ql_Person):  # 
    """ 
    类说明文档:
    """
    num = 30
    num2 = 100
    def ql_Stu_Study(self):  #
        """
        函数说明文档:
        """
        print('%s在写代码' % self.name)

    @classmethod
    def ql_Show_Num(cls):
        print('学生数量: %d' % cls.num)
    
    def ql_Eat(self):  #
        """
        函数说明文档: 重点!!!
        """
        super().ql_Eat('栗子') #   调用父类中的函数
        print('吃饱了')

def main():
    p1 = Ql_Person('张三')
    stu1 = Ql_Stu('李四')
    stu1.ql_Stu_Study()
    stu1.ql_Eat()
    print(p1._Ql_Person__sex)  
    p1.ql_Show_Num()
    stu1.ql_Show_Num()
    print(stu1.num2)

class Ql_Animals:  # 
    """ 
    类说明文档:
    """
    def __init__(self, age):
        """
        函数说明文档:
        """
        self.age = age
        self.type = '爬行'
        self.color = '灰色'

class Ql_Dog(Ql_Animals):  # 
    """ 
    类说明文档:
    """
    def __init__(self, age):
        self.name = '啊狗'
        super().__init__(age)




def main():
    dog1 = Ql_Dog(20)
    print(dog1.type, dog1.color)
    dog2 = Ql_Dog(30)
    print(dog2.name)

#练习:
#声明人类的属性:名字,年龄,性别
#声明学生类有属性:名字,年龄,性别,学号,分数
#要求:创建人的对象的时候,名字必须赋值,性别可以赋值也可以不赋值,年龄不能赋值,
# 创建学生对象的时候,名字可以赋值可以不赋值,学号必须赋值,分数和性别年龄不能赋值

class Ql_Person:  # 
    """ 
    类说明文档:
    """
    def __init__(self, name, sex = None ):
        """
        函数说明文档:
        """
        self.name = name 
        self.sex = sex
        self.age = None

class Ql_Stu(Ql_Person):  # 
    """ 
    类说明文档:
    """
    def __init__(self, num, name = ''):
        """
        函数说明文档:
        """
        super().__init__(name)
        self.num = num
        self.score = None

def main1():
    stu1 = Ql_Stu(1)
    print(stu1.__dict__)
上一篇 下一篇

猜你喜欢

热点阅读