3.Python面向对象编程


#了解一下最基础的类的学习和面向对象的编程与一些引申知识。(self与_init_的用法)
'''
建造生物
类名:生物(creature)
属性(变量):名字(name) 年龄(age) 性别(sex)
方法(函数):呼吸(breath) 行走(move) 进食(eat) 交配(mate)

类名:鸡(cook)
属性(变量):颜色(color)
方法(函数):下蛋(lay)  

类名:人(human)
属性(变量):电话(tel) 住址(address) 学历(degree)
方法(函数):学习(study) 工作(work) 自我介绍(introduce)
'''

class  creature(object):
    def __init__(self,name,age,sex,**kw):  #'__init__'用于初始化属性
        self.name = name
        self.age = age
        self.sex = sex
        for k,w in kw.items():      #**kw表示任意常数,这个for 循环是必须的,由于设置属性值。
            setattr(self,k,w)      #setattr 函数对应函数 getatt(),用于设置属性值,该属性必须存在。object -- 对象。        setattr(object, name, value)
#                                                                                              name -- 字符串,对象属性。
#                                                                                              value -- 属性值。
    def breath():
        print('Breathing!!')

    def move():
        print('Step by!!')

    def eat():
        print('Hulk eating!')

    def mate():
        print('Love!!')

class cook(creature):   #继承的用法!
    def __init__(self,name,age,sex,color):
        super(cook, self).__init__(name,age,sex) #一定要用 super(cook, self).__init__(name, age,sex) 去初始化父类,否则,继承自 creature 的 cook 将没有 name 和 age sex
        self.color = color
    def lay():
        print('A egg born!')

class human(creature):
    def __init__(self,name,age,sex,tel,add,degree):
        super(human, self).__init__(name,age, sex)
        self.tel = tel
        self.add = add
        self.degree = degree

    def study(self):  #这里以self为函数参数的原因是因为此函数需要使用类本身定义的属性。
        print('{0} is studying!'.format(self.name)) #如果没有self的话就不知道这个属性是何归属(因为python不和C++一样有public 和 private 之分)。

    def work():
        print('Working!!')

    def introduce(self):
        print(f'My name is {self.name}. \n My tel is {self.tel}.')




#这是动态语言和静态语言(例如Java)最大的差别之一。动态语言调用实例方法,不检查类型,只要方法存在,参数正确,就可以调用。


def main():
    creature.breath()
    cook.lay()
    h = human('dick',11,'man',13807004070,"BackerStreet 1001",'High school')
    h.study()
    print(f'{h.name} is a {h.sex}')#fstring 用法
    h.introduce()
    M = creature('M',3,'female',tall = '18cm')
    print(f'{M.name} is {M.tall} tall.')
    
    #当我们得到一个变量时,如何判断他的信息?
    print(type(M))  #可以用 type() 函数获取变量的类型,它返回一个 Type 对象.
    print(dir(M))  #可以用 dir() 函数获取变量的所有属性.   dir()返回的属性是字符串列表,如果已知一个属性名称,要获取或者设置对象的属性,就需要用 getattr() 和 setattr( )函数了


if __name__ == '__main__':
    main()

你可能感兴趣的:(3.Python面向对象编程)