【发布时间】:2017-07-29 06:59:57
【问题描述】:
我用魔术变量设计了这个OOPs代码,实际上感觉有点复杂,所以我想把这段代码改成最简单的,而不使用魔术变量。下面的代码是Python中的继承。
我正处于 OOP 概念的学习阶段,请向我推荐最佳 OOP 实践以及从程序员工作的角度来看哪些概念在 OOP 中很重要。
class Bike():
bmodel = ''
def __init__(self,**model):
self.bmodel = model.get('bmodel')
super(Bike,self).__init__(**model)
def setmodelb(self,bmodel):
self.bmodel = bmodel
def getmodel(self):
return self.bmodel
def tostringb(self):
print("Licence",self.lno,"is Bike and Model is",self.bmodel)
class Car():
cmodel = ''
def __init__(self,**model):
self.cmodel = model.get('cmodel')
super(Car,self).__init__()
def setmodelc(self,cmodel):
self.cmodel = cmodel
def getmodel(self):
return self.cmodel
def tostringc(self):
print("Licence",self.lno,"is Car and Model is",self.cmodel)
class Vehicle(Bike,Car):
lno = ''
def __init__(self,**model):
self.lno = model.get('lno')
super(Vehicle,self).__init__(**model)
def setlno(self,lno):
self.lno = lno
def getlno(self):
return self.lno
def tostringv(self):
print("Vehicle Licence is",self.lno)
v = Vehicle()
v.setlno("CALIFORNIA99")
v.setmodelc("HONDA CITY")
v.tostringc()
v.tostringv()
输出
Licence CALIFORNIA99 is Car and Model is HONDA CITY
Vehicle Licence is CALIFORNIA99
[Finished in 0.1s]
【问题讨论】:
-
您的继承完全颠倒了 - Car 是 Vehicle,Bike 是 Vehicle,但 Vehicle 不是 Car-and-Bike。也不清楚你在问什么。 Code Review,也许(仅注意工作代码)?
-
不清楚你在问什么。我敢肯定,如果您在网上搜索,您会发现大量解释 OOP 的资源。
-
实际条件是不要使用魔法变量就可以了。
-
那么"magic variables"是什么意思呢?您认为应该删除其中的哪些内容?如果有的话,你没有足够 Python“魔法”;如果需要的话,setter 和 getter 应该被替换为属性。
标签: python python-3.x oop multiple-inheritance