Python面向对象的程序设计详情

1. 设计一个圆类,包括圆心位置、半径、颜色等属性。编写构造方法, 计算周长和面积。

import math
class Circle:
    def __init__(self,o,r,colour):
        self.o = o
        self.r = r
        self.colour = colour
    def length(self): #周长
        C = math.pi*self.r*2
        return C
    def area(self):   #面积
        S = math.pi*self.r**2
        return S
 
if __name__ == "__main__":
    r=eval(input("请输入半径:"))
    circle = Circle((0,0),r,'blue') #坐标、半径、颜色
    C = circle.length()
    S = circle.area()
    print('圆周长为:{:.2f}'.format(C))
    print('圆面积为:{:.2f}'.format(S))

 2. 设计一个描述自由落体运动的类,要求能获得任意时刻的速度及位移,并进行测试。已知重力加速度为 9.8m/s。

class Free:
    def __init__(self,t): 
        self.t = t
    def getv(self): #速度函数
        v=9.8*self.t
        return v
    def getx(self): #位移函数
        x=0.5*9.8*self.t**2
        return x
    
if __name__ == "__main__":
    t=eval(input("请输入时刻t:"))
    f=Free(t) #调用
    print("t={} 时刻的".format(t),end='')
    print("速度为:{:.2f}".format(f.getv()))
    print("t={} 时刻的".format(t),end='')
    print("位移为:{:.2f}".format(f.getx()))

3. 为二次方程式 ax²+bx+c=0 设计一个名为 Equation 的类,这个类包括:

  • 代表 3 个系数的成员变量 a、b、c;
  • 一个参数为 a、b、c 的构造方法;
  • 一个名为 getDiscriminant1 的方法返回判别式的值;
  • 一个名为 getRoot1 getRoot2 的方法返回等式的两个根, 如果判别式为负,这些方法返回0。
import math
class Equation:
    def __init__(self,a,b,c):
        self.a = a
        self.b = b
        self.c = c
    def getDiscriminant1(self):  #判别式
        d=(self.b)**2 -(4*self.a*self.c)
        return d
    def getRoot1(self):
        if self.getDiscriminant1()>=0:
            x1=(-self.b+math.sqrt(self.getDiscriminant1()))/2*self.a
            return x1
        else:
            return 0
    def getRoot2(self):
        if self.getDiscriminant1()>=0:
            x2=(-self.b+math.sqrt(self.getDiscriminant1()))/2*self.a
            return x2
        else:
            return 0
    
if __name__ == "__main__":
    a=eval(input("请输入系数a:"))
    b=eval(input("请输入系数b:"))
    c=eval(input("请输入系数c:"))
    f=Equation(a,b,c)
    print("判别式:",f.getDiscriminant1())
    print("根1:",f.getRoot1())
    print("根2:",f.getRoot2())

4. 设计一个二维向量类,实现向量的加法、减法及向量与标量的乘法和除法运算,其中要求输入是元组。

class Vector: 
    def __init__(self,a,b):
        self.a = a
        self.b = b
    def jia(self):
        c1 = (self.a[0] + self.b[0])
        c2 = (self.a[1] + self.b[1])
        return (c1,c2)
    def jian(self):
        c1 = (self.a[0] - self.b[0])
        c2 = (self.a[1] - self.b[1])
        return (c1,c2)
    def diancheng(self):
        c1 = (self.a[0] * self.b[0])
        c2 = (self.a[1] * self.b[1])
        return c1+c2
    #向量无除法
    
if __name__ == "__main__":
    a=eval(input("请输入向量a:"))
    b=eval(input("请输入向量b:"))
    f=Vector(a,b)
    print("  加:",f.jia())
    print("  减:",f.jian())
    print("点乘:",f.diancheng())

 5. 设计一个课程类,包括课程编号、课程名称、任课教师、上课地点 等属性,把上课地点变量设为私有的,增加构造方法和显示课程信息的方法。

class Course: 
    def __init__(self,Cno,Cname,teacher,local):
        self.Cno = Cno
        self.Cname = Cname
        self.teacher = teacher
        self.__local =local #把上课地点变量设为私有的
    def information(self):
        print("课程编号:",self.Cno)
        print("课程名称:",self.Cname)
        print("任课教师:",self.teacher)
        print("上课地点:",self.__local)
 
if __name__ == "__main__":
    f=Course('NO.','what','who','where')
    f.information()

6. 设计一个整形数组的封装类,要求实现下列功能:

  • 显示全部数组数据
  • 显示从某位置开始的一段连续数组数据。
import random
class List:
    def __init__(self,lis):
        self.__lis=lis
    def quanbu(self):     #全部数组数据
        return self.__lis
    def bufen(self,id):   #从部分位置开始的一段连续数组数据
        return self.__lis[id:]
 
f=List([random.randint(1,51) for i in range(20)])  #设置数组为20个1-50的随机数组合
print("显示全部数组数据:",f.quanbu())  
random_index = random.randint(0,21)  #随机选取从某一位置开始的索引号
print("显示从<第{}>位置开始的一段连续数组数据:".format(random_index),f.bufen(random_index))

到此这篇关于Python面向对象的程序设计详情的文章就介绍到这了,更多相关Python面向对象的程序设计内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python面向对象程序设计之静态方法、类方法、属性方法原理与用法分析

    本文实例讲述了Python面向对象程序设计之静态方法.类方法.属性方法原理与用法.分享给大家供大家参考,具体如下: 前言:认为方法与函数同意义,由于这里使用method,所以称为方法 静态方法: 使用@staticmethod来定义静态方法. 静态方法:类和实例都可以调用的方法,实际上跟类没什么关系了,对于这种不太相关的就使用静态方法[用实例和类调用没有区别] class Dog(object): def __init__(self,name): self.name=name def talk(

  • Python面向对象程序设计之私有变量,私有方法原理与用法分析

    本文实例讲述了Python面向对象程序设计之私有变量,私有方法原理与用法.分享给大家供大家参考,具体如下: 私有变量,私有方法: python的私有化是为了规划私有属性,避免非相关的访问[假如!我有老婆,你不能直接知道我老婆是谁,你只有问我才会知道,即我的私有属性只有我知道] 在python中定义私有变量和私有方法只需要在变量名或函数名前加上 "__"两个下划线 在类内部的方法中使用时  self.__变量名或函数名. 实际上,如果真要访问私有变量和私有方法,也是可以访问的,因为实际上

  • Python面向对象程序设计之类和对象、实例变量、类变量用法分析

    本文实例讲述了Python面向对象程序设计之类和对象.实例变量.类变量用法.分享给大家供大家参考,具体如下: 类和对象: 类的定义:用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 类的优势:将一个对象的功能集中于一体,便于操作,降低了代码的重复. 实例化:创建一个类的实例,类的具体对象. 对象:通过类定义的数据结构实例.对象包括两个数据成员(类变量和实例变量)和方法. 使用 class 语句来创建一个新类: class Dog: #self

  • Python面向对象程序设计构造函数和析构函数用法分析

    本文实例讲述了Python面向对象程序设计构造函数和析构函数用法.分享给大家供大家参考,具体如下: 构造函数和析构函数 1.构造方法的使用 很多类都倾向于将对象创建为有初始化状态.因此类可以定义一个名为init()的特殊方法(构造方法)来实例化一个对象. 构造方法也叫做构造器,是指当实例化一个对象(创建一个对象)的时候,第一个被自动调用的方法. 演示1:构造方法被调用的契机 class Person(): #构造方法 def __init__(self): print("构造函数被执行了&quo

  • Python3.5面向对象程序设计之类的继承和多态详解

    本文实例讲述了Python3.5面向对象程序设计之类的继承和多态.分享给大家供大家参考,具体如下: 1.继承的定义 继承是指:可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展. (1)通过继承创建的新类称为"子类"或"派生类". (2)被继承的类称为"基类"."父类"或"超类". 继承的过程,就是从一般到特殊的过程.要实现继承,可以通过"继承"(Inherit

  • Python面向对象程序设计类变量与成员变量、类方法与成员方法用法分析

    本文实例讲述了Python面向对象程序设计类变量与成员变量.类方法与成员方法用法.分享给大家供大家参考,具体如下: 类变量与成员变量 在类中声明的变量我们称之为类变量[静态成员变量], 在init()函数中声明的变量并且绑定在实例上的变量我们称之为成员变量. 类变量直接可以通过类名来调用. 1.若类变量与成员同时存在并且同名 使用对象来调用的时候,获取的结果是成员变量的值, 使用类名来调用,获取的是类变量的值. 2.若类变量存在,成员变量不存在, 使用对象来调用的时候,它首先寻找成员变量, 如果

  • Python面向对象程序设计之继承、多态原理与用法详解

    本文实例讲述了Python面向对象程序设计之继承.多态原理与用法.分享给大家供大家参考,具体如下: 相关内容: 继承:多继承.super.__init__.重写父类变量或函数 多态 继承: 在Python3中,不写基类的类默认继承object 继承就是子类获得了父类的全部功能:比如学生和老师都有"姓名,性别,年龄.ID"等学校人员属性,如果学生和老师都直接继承学校人员的"姓名,性别,年龄.ID",那么就不必要在学生类和老师类中重复定义了. 继承指定类的方式是:cla

  • Python面向对象程序设计类的封装与继承用法示例

    本文实例讲述了Python面向对象程序设计类的封装与继承用法.分享给大家供大家参考,具体如下: 访问限制(封装) 1.概念 面向对象语言的三大特征:封装, 继承, 多态. 广义的封装: 类和函数的定义本身就是封装的体现. 狭义的封装:一个类的某些属性,不希望外界直接访问,而是把这个属性私有化[只有当前类持有],然后暴露给外界一个访问的方法. 封装的本质:就是属性私有化的过程. 封装的好处:提供了数据的复用性,保证了数据的安全性. 举例:插排 2.使用 class Person(object):

  • Python面向对象程序设计类的多态用法详解

    本文实例讲述了Python面向对象程序设计类的多态用法.分享给大家供大家参考,具体如下: 多态 1.多态使用 一种事物的多种体现形式,举例:动物有很多种 注意: 继承是多态的前提 函数重写就是多态的体现形式 演示:重写Animal类 第一步:先定义猫类和老鼠类,继承自object,在其中书写构造方法和eat方法 第二步: 抽取Animal父类,定义属性和eat方法,猫类与老鼠类继承即可 第三步: 定义人类,在其中分别定义喂猫和喂老鼠的方法 第四步:使用多态,将多个喂的方法提取一个. # 测试类

  • Python面向对象的程序设计详情

    1. 设计一个圆类,包括圆心位置.半径.颜色等属性.编写构造方法, 计算周长和面积. import math class Circle:     def __init__(self,o,r,colour):         self.o = o         self.r = r         self.colour = colour     def length(self): #周长         C = math.pi*self.r*2         return C     def

  • Python面向对象程序设计OOP入门教程【类,实例,继承,重载等】

    本文实例讲述了Python面向对象程序设计OOP.分享给大家供大家参考,具体如下: 类是Python所提供的最有用的的工具之一.合理使用时,类可以大量减少开发的时间.类也在流行的Python工具中使用,例如,tkinter GUI API. 为何使用类 与面向对象的Java一样,类是对现实世界的一种抽象. 从更具体的程序设计观点来看,类是Python的程序组成单元,就像函数和模块一样:类是封装逻辑和数据的另一种方式.实际上,类也定义新的命名空间,在很大程度上就像模块.但是类有三个重要的独到之处,

  • Python面向对象程序设计之继承与多继承用法分析

    本文实例讲述了Python面向对象程序设计之继承与多继承.分享给大家供大家参考,具体如下: 1. 继承 在C++和Java中,使用继承时,子类的构造函数会自动调用父类的构造函数,但在Python中,子类必须显式的在__init__()函数中再次调用父类中的__init__()函数.如下例: class Employee(object): def __init__(self, name, salary = 0): self.name = name self.salary = salary def

  • Python面向对象程序设计示例小结

    本文实例讲述了Python面向对象程序设计.分享给大家供大家参考,具体如下: 示例1: #encoding:utf-8 '''example 1 class test: def __init__(self,year,**arg): self.year = year self.args = arg def kaka(self): if isinstance(self.year,str): print 'input\'s year is a string! Error' elif isinstanc

  • Python面向对象程序设计多继承和多态用法示例

    本文实例讲述了Python面向对象程序设计多继承和多态用法.分享给大家供大家参考,具体如下: 多继承 就是一个子类继承多个父类: 多继承的例子,如下: # -*- coding:utf-8 -*- #! python3 class Base(object): def test(self): print("------base") class A(Base): def test1(self): print("-----test1") class B(Base): de

  • Python面向对象程序设计中类的定义、实例化、封装及私有变量/方法详解

    本文实例讲述了Python面向对象程序设计中类的定义.实例化.封装及私有变量/方法.分享给大家供大家参考,具体如下: 1. 定义类 python中定义一个类的格式如下: class MyClass(object): def __init__(self,data1,data2): self.__data1=data1 self.data2=data2 def __func1(self): print("MyClass类的私有方法被调用!") def print_data(self): s

  • Python面向对象程序设计之私有属性及私有方法示例

    本文实例讲述了Python面向对象程序设计之私有属性及私有方法.分享给大家供大家参考,具体如下: 如果有一个对象,当需要对其进行修改属性时,有2种方法: (1)对象名.属性名=数据---->直接修改 (2)对象名.方法名()----->间接修改 为了更好的保障属性安全,不能随意修改,一般处理方式为: (1)将属性定义为私有属性 (2)添加一个可以调用的方法,供调用,也就是间接调用属性 首先我讲解下私有属性的例子: 1.下面这个是一个错误的例子: class People(object): de

  • Python面向对象程序设计OOP深入分析【构造函数,组合类,工具类等】

    本文深入分析了Python面向对象程序设计OOP.分享给大家供大家参考,具体如下: 下面是一个关于OOP的实例,模块文件为person.py # File person.py(start) class Person: def __init__(self, name, job=None, pay=0): self.name = name self.job = job self.pay = pay def last_name(self): return self.name.split()[-1] d

随机推荐