我设计了这个带有魔术变量的OOP代码,实际上它感觉有点复杂,所以我想纠正这个代码最简单的一个,而不使用Magic变量。下面的代码是Python中的继承。想用Python代替这些Magic Variable
而且我正在学习OOPs概念的阶段,请建议我最好的OOPs实践和哪些概念在面向对象编程人员的角度来说很重要。
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]
你的继承是完全颠倒 - 一辆车是一辆车,一辆自行车是一辆车,但一辆车不是一辆车和自行车。也不清楚你要求什么。 [codereview.se],也许(只为工作代码**注释)? – jonrsharpe
目前还不清楚你在问什么。我相信,如果你在网上搜索,你会发现解释面向对象的大量资源。 – direprobs
实际情况是不使用魔术变数那就是它。 –