类的特性

  • 封装

  • 继承

  • 多态

    定义类的属性

  • 直接在类里面定义

  • 在构造函数里面定义

    用Python定义类

#!/usr/bin/env python
# -*- coding: utf-8 -*-
__author__ = 'wangke'
__time__ = '2018-01-26 15:47'

class Programer(object):
    hobby = 'Play Computer!'
    def __init__(self, name, age, weight):
        self.name = name
        self._age = age
        self.__weight = weight

    def get_weight(self):
        return self.__weight

if __name__ == '__main__':
    Programer = Programer('xiaoke','25',88) #实例化对象
    print(dir(Programer))
    print(Programer.__dict__) #打印从构造函数获得的属性
    print(Programer.get_weight())
    # print(Programer.__weight) 直接获取会出错,使用了__定义的属性相当于私有属性,但是非要访问可以通过下面的方式访问到
    print(Programer._Programer__weight)

执行结果如下
Python面向对象_第1张图片

定义类的方法

函数和方法

  • 函数是直接用函数名调用的

  • 方法是类的一部分

  • 类的方法也是类的属性

装饰类里面的方法

@classmethod

调用的时候用类名,而不是某个对象

@property

像访问属性一样调用方法

类的继承

#!/usr/bin/env python
# -*- coding: utf-8 -*-
__author__ = 'wangke'
__time__ = '2018-01-26 15:47'
PROJECT_NAME = 'test_projtcts'

class Programer(object):
    hobby = 'Play Computer!'
    def __init__(self, name, age, weight):
        self.name = name
        self._age = age
        self.__weight = weight

    def get_weight(self):
        return self.__weight

#继承Programer类
class BackEndProgramer(Programer):
    def __init__(self,name, age, weight, language):
             #使用super()获取父类的属性
        super(BackEndProgramer,self).__init__(name, age, weight)
        self.language = language

if __name__ == '__main__':
    Programer = BackEndProgramer('xiaoke','25',88,'Python') #实例化对象
    print(dir(Programer))
    print(Programer.__dict__) #打印从构造函数获得的属性