classTime:
def__init__(self,hours,minutes,seconds):
self.__hours=hours
self.__minutes=minutes
self.__seconds=seconds
defhours(self):
returnself.__hours
defminutes(self):
returnself.__minutes
defseconds(self):
returnself.__seconds
def__add__(self,other):#定义加法行为
pass
def__sub__(self,other):#定义减法行为
pass
def__eq__(self,other):#定义等于号行为
pass
def__lt__(self,other):#定义小于号行为
pass
写出大致框架,自行完善后面的四个魔法方法
❷ 利用Python面向对象的编程,求出正方形(4),长方形(3,5)的面积和周长,代码怎么写
Private Sub Command1_Click()
这样写(你不是定义数组,而是定义变量):
Dim a As Double
Dim b As Double
a=val(text1.text)
b=val(text2.text)
Text3.Text = Str(a * b)
End Sub
❸ Python编程 面向对象程序设计
面向过程:根据业务逻辑从上到下写垒代码
函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可
面向对象:对函数进行分类和封装,让开发“更快更好更强...”
面向过程编程最易被初学者接受,其往往用一长段代码来实现指定功能,开发过程中最常见的操作就是粘贴复制,即:将之前实现的代码块复制到现需功能处。
❹ python面向对象编程作业
importre
classderivative:
def__init__(self,s):
self.s='+'+sifs[0]notin['+','-']elses
def__analysis__(self):
self.ite=list(re.finditer('[+-]',self.s))
self.items=[xforxinre.split(r'[+-]',self.s)ifx!='']
self.pm=[self.s[i.span()[0]]foriinself.ite]
self.var=[k[k.find('^')-1]forkinself.itemsifk.find('^')>-1][0]
self.ratio=[]
self.power=[]
foriteminself.items:
j=item.find('^')
k=item.find(self.var)
ifj>-1:
self.power.append(int(item[j+1]))
elifk>-1:
self.power.append(1)
else:
self.power.append(0)
foriteminself.items:
k=item.find('*')
ifk>-1:
self.ratio.append(int(item[k-1]))
elifitem.find(self.var)>-1:
self.ratio.append(1)
else:
self.ratio.append(int(item))
self.items=[t[1]fortinsorted(list(zip(self.power,self.items)),reverse=True)]
self.ratio=[t[1]fortinsorted(list(zip(self.power,self.ratio)),reverse=True)]
self.pm=[t[1]fortinsorted(list(zip(self.power,self.pm)),reverse=True)]
self.power.sort(reverse=True)
def__derivative__(self):
power=[x-1ifx>1else0forxinself.power]
ratio=[]
foriinrange(len(self.power)):
ifself.power[i]>1:
ratio.append(self.power[i]*self.ratio[i])
elifself.power[i]==1:
ratio.append(self.ratio[i])
else:
ratio.append(0)
items=[]
foriinrange(len(self.power)):
ifratio[i]==0:
continue
item=self.pm[i]
ifratio[i]>0:
item+=str(ratio[i])
ifpower[i]>0:
item+='*'+self.var
ifpower[i]>1:
item+='^'+str(power[i])
items.append(item)
self.out_s=''.join(items)
ifself.out_s[0]=='+':
self.out_s=self.out_s[1:]
defder(self):
self.__analysis__()
self.__derivative__()
returnself.out_s
s='2*x^3+3*x^2+5*x+1'
d=derivative(s)
print(d.der())
s='-5*x^6-3*x^3+12-4*x^4'
d=derivative(s)
print(d.der())
“不恰当的输入”不知道要处理什么级别的错误,所以没搞。自己根据需求去搞吧。
❺ Python面向对象程序设计题,设计一个选课系统,要求如下:
你这完全是一个小软件拉,想着是没有人会直接回源码的吧,且还是面向对象的.用tkinter,还是pyqt等,都没有说.
❻ python使用面向对象的编程方法完成“超市管理系统”的编写
是代码有bug需要调试,还是别的
❼ Python面向对象编程之继承与多态详解
Python面向对象编程之继承与多态详解
本文实例讲述了Python面向对象编程之继承与多态。分享给大家供大家参考,具体如下:
Python 类的继承
在OOP(Object Oriented Programming)程序设计中,当我们定义一个class的时候,可以从某个现有的class 继承,新的class称为子类(Subclass),而被继承的class称为基类、父类或超类(Base class、Super class)。
我们先来定义一个class Person,表示人,定义属性变量 name 及 sex (姓名和性别);
定义一个方法print_title():当sex是male时,print man;当sex 是female时,print woman。参考如下代码:
class Person(object):
def __init__(self,name,sex):
self.name = name
self.sex = sex
def print_title(self):
if self.sex == "male":
print("man")
elif self.sex == "female":
print("woman")
class Child(Person): # Child 继承 Person
pass
May = Child("May","female")
Peter = Person("Peter","male")
print(May.name,May.sex,Peter.name,Peter.sex) # 子类继承父类方法及属性
May.print_title()
Peter.print_title()
而我们编写 Child 类,完全可以继承 Person 类(Child 就是 Person);使用 class subclass_name(baseclass_name) 来表示继承;
继承有什么好处?最大的好处是子类获得了父类的全部属性及功能。如下 Child 类就可以直接使用父类的 print_title() 方法
实例化Child的时候,子类继承了父类的构造函数,就需要提供父类Person要求的两个属性变量 name 及 sex:
在继承关系中,如果一个实例的数据类型是某个子类,那它也可以被看做是父类(May 既是 Child 又是 Person)。但是,反过来就不行(Peter 仅是 Person,而不是Child)。
继承还可以一级一级地继承下来,就好比从爷爷到爸爸、再到儿子这样的关系。而任何类,最终都可以追溯到根类object,这些继承关系看上去就像一颗倒着的树。比如如下的继承树:
isinstance() 及 issubclass()
Python 与其他语言不同点在于,当我们定义一个 class 的时候,我们实际上就定义了一种数据类型。我们定义的数据类型和Python自带的数据类型,比如str、list、dict没什么两样。
Python 有两个判断继承的函数:isinstance() 用于检查实例类型;issubclass() 用于检查类继承。参见下方示例:
class Person(object):
pass
class Child(Person): # Child 继承 Person
pass
May = Child()
Peter = Person()
print(isinstance(May,Child)) # True
print(isinstance(May,Person)) # True
print(isinstance(Peter,Child)) # False
print(isinstance(Peter,Person)) # True
print(issubclass(Child,Person)) # True
Python 类的多态
在说明多态是什么之前,我们在 Child 类中重写 print_title() 方法:若为male,print boy;若为female,print girl
class Person(object):
def __init__(self,name,sex):
self.name = name
self.sex = sex
def print_title(self):
if self.sex == "male":
print("man")
elif self.sex == "female":
print("woman")
class Child(Person): # Child 继承 Person
def print_title(self):
if self.sex == "male":
print("boy")
elif self.sex == "female":
print("girl")
May = Child("May","female")
Peter = Person("Peter","male")
print(May.name,May.sex,Peter.name,Peter.sex)
May.print_title()
Peter.print_title()
当子类和父类都存在相同的 print_title()方法时,子类的 print_title() 覆盖了父类的 print_title(),在代码运行时,会调用子类的 print_title()
这样,我们就获得了继承的另一个好处:多态。
多态的好处就是,当我们需要传入更多的子类,例如新增 Teenagers、Grownups 等时,我们只需要继承 Person 类型就可以了,而print_title()方法既可以直不重写(即使用Person的),也可以重写一个特有的。这就是多态的意思。调用方只管调用,不管细节,而当我们新增一种Person的子类时,只要确保新方法编写正确,而不用管原来的代码。这就是着名的“开闭”原则:
对扩展开放(Open for extension):允许子类重写方法函数
对修改封闭(Closed for modification):不重写,直接继承父类方法函数
子类重写构造函数
子类可以没有构造函数,表示同父类构造一致;子类也可重写构造函数;现在,我们需要在子类 Child 中新增两个属性变量:mother 和 father,我们可以构造如下(建议子类调用父类的构造方法,参见后续代码):
class Person(object):
def __init__(self,name,sex):
self.name = name
self.sex = sex
class Child(Person): # Child 继承 Person
def __init__(self,name,sex,mother,father):
self.name = name
self.sex = sex
self.mother = mother
self.father = father
May = Child("May","female","April","June")
print(May.name,May.sex,May.mother,May.father)
若父类构造函数包含很多属性,子类仅需新增1、2个,会有不少冗余的代码,这边,子类可对父类的构造方法进行调用,参考如下:
class Person(object):
def __init__(self,name,sex):
self.name = name
self.sex = sex
class Child(Person): # Child 继承 Person
def __init__(self,name,sex,mother,father):
Person.__init__(self,name,sex) # 子类对父类的构造方法的调用
self.mother = mother
self.father = father
May = Child("May","female","April","June")
print(May.name,May.sex,May.mother,May.father)
多重继承
多重继承的概念应该比较好理解,比如现在需要新建一个类 baby 继承 Child , 可继承父类及父类上层类的属性及方法,优先使用层类近的方法,代码参考如下:
class Person(object):
def __init__(self,name,sex):
self.name = name
self.sex = sex
def print_title(self):
if self.sex == "male":
print("man")
elif self.sex == "female":
print("woman")
class Child(Person):
pass
class Baby(Child):
pass
May = Baby("May","female") # 继承上上层父类的属性
print(May.name,May.sex)
May.print_title() # 可使用上上层父类的方法
class Child(Person):
def print_title(self):
if self.sex == "male":
print("boy")
elif self.sex == "female":
print("girl")
class Baby(Child):
pass
May = Baby("May","female")
May.print_title() # 优先使用上层类的方法
❽ python面向对象编程题
父类省份,子类地级城市继承父类
地级城市属性:姓名、商品数量、基金数目
地级城市方法:买,对应功能1;卖,对应功能2
主方法中包含变量:自己(qinshihuang),周边市供应商(liubang),买家(hanxin),利润期望
随机变量是商品销售数
初始状态是先从供应商买走4件商品,然后关键在于被退回的商品是否算作售出(涉及到公式的内容)
❾ python面向对象编程中的f.init()什么意思,为什么要加这一个
f.init()加在中间是为了类Filter定义一个属性blocked并初始化,因为它定义了类的属性blocked,而类Filter的函数filter中要用到这个属性,所以不加f.init()会报错.
同样的s.init(),SPAMFilter子类重写了Filter父类的init函数,并且重新定义了属性blocked,而子类SPAMFilter继承的父类Filter的函数filter中用到了这个属性,所以不加s.init()也会报错.
完整的Python程序如下
class Filter:
def init(self):
self.blocked=[]
def filter(self,sequence):
return [x for x in sequence if x not in self.blocked]
class SPAMFilter(Filter):
def init(self):
self.blocked=['SPAM']
f=Filter()
f.init()
print(f.filter([1,2,3]))
s=SPAMFilter()
s.init()
print(s.filter(['SPAM','SPAM','SPAM','SPAM','eggs','bacon','SPAM']))
源代码(注意源代码的缩进)
❿ 一个python编程题目——面向对象的
不一定的,以后每个月越来越多兔子,没有准确数目