python (面向对象编程)

Posted 谦曰盛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python (面向对象编程)相关的知识,希望对你有一定的参考价值。

提纲:面向对象的基本思想

  类与对象的关系

  类的结构与成员

  Python中的魔法函数

  按功能要求完成类的设计与实例化对象

 

一切皆对象

BIFS:

type()返回数据类型 

id()查看对象ID

dir() 查看对象下变量及函数

issubclass(), isinstance(), super(),类,实例,调父类

hasattr(), getattr(), setattr(),delattr(), 类属性

globals(), locals(), 全局与局部的名称空间

import(), reload(),模块的导入与重载

 

创建类:

class关键字

指定继承

定义类的成员

  数据成员

    类变量

    实例对象

  方法成员

    类方法

    实例对象

实例化类

类的创建与初始化

例子:

完成一个学生类的设计

能查看学生总人数,全部学生姓名,毕业分数标准,已经毕业学员数量

实现考试方法,成绩分数如果大于60分代表其通过考试,分数计入该学员总分

若该学员累计分数达到1000分钟,该学员即毕业

实现查分方法,向该学员返回是否已经毕业,或者还差多少分数才能毕业

实现查询所有已毕业学生数量的功能

实现查询所有学生数量的功能

实现查询所有学生姓名的功能

 

class Student():
  student_total=0
  student_list=[]
  student_graduated=0
  pass_score=1000

def __init__(self,name,age,gender):
  self.name=name
  self.age=age
  self.genger=gender
  self.score=0

  Student.student_total+=1
  Student.student_list.append(name)


def exam(self,score):
  if score<60:
    return ‘failed‘
  else:
    self.score+=score
    str1=‘good, your score is now ‘+str(self.score)

  if self.score>=Student.pass_score:
  Student.student_graduated+=1

  return str1

#david=Student(‘david‘,22,‘male‘)
#type(david)

  def check(self,): #只要是对象的方法,都要以self开头
    if self.score<Student.pass_score:
      return ‘you have‘,Student.pass_score-self.score,‘to achieve‘
    else:
      return ‘you have graduated‘

  @classmethod
  def get_student_graduated(cls,): #cls ?
    return Student.student_graduated

  @classmethod
  def get_student_total(cls,): #cls ?
    return Student.get_student_total

  @classmethod
  def get_student_list(cls,): #cls ?
    return Student.get_student_list


  @staticmethod
  def static1():
    return‘this is a static method form Student,it is can be called by both the class and the instance‘
xiaoming=Student(‘xiaoming‘,22,‘male‘)
xiaoming=Student(‘ximing‘,22,‘male‘)


Student.get_student_list()

#有问题,未达到预期的效果

<bound method Student.get_student_list of <class ‘__main__.Student‘>>

 

 

静态方法(普通方法):

  定义的时候使用@staticmethod装饰器

  静态方法没有参数限制,不需要实例参数self和类参数cls    cls是class的简写

  静态法可以通过类名访问,或者实例访问

 

 

 私有控制 双下划线 "__"

 

 

  

 





















































以上是关于python (面向对象编程)的主要内容,如果未能解决你的问题,请参考以下文章

面向面试编程代码片段之GC

面向对象编程其实很简单--python面向对象(初级篇)

Python基础-第六天-面向对象编程

面向对象编程其实很简单——Python 面向对象(初级篇)

python之面向对象编程一

python基础之面向对象