class Car:
def __init__(self,brand,car):
self.brand =brand
self.car = car
def displayinfo(self):
print("brand",self.brand)
print("car",self.car)
c1 = Car("tata","sedan")
print(c1.brand)
c1.displayinfo()
这里的displayinfo也可以认为是一个封装的例子,因为该函数可以被对象使用,但不能被对象修改
我想知道这是否是封装的一个例子,如果是的话,如何,如果不是,为什么不
您的代码没有显示出强的封装指示。封装是OOP编程中的一个重要概念。它在某些编程语言(例如 Java)中尤其普遍,您可以将属性声明为
private
、public
,对于 Java,可以将属性声明为 protected
。尽管Python没有这些声明,但封装仍然是OOP编程中的一个重要问题。封装意味着属性不能被修改,除非通过父类提供的方法。您的案例中的封装示例:
class Car:
def __init__(self,brand,car):
self.brand =brand
self.car = car
def displayinfo(self):
print("brand",self.brand)
print("car",self.car)
def set_brand(self, new):
# probably do some validation here
self.brand = new
这里,虽然封装不是强制,但仍然是支持的,任何优秀的程序员都会使用
set_brand
方法来设置类brand
的Car
属性,而不是直接设置它,即self.brand = 'tesla'
。不过,不要在 python 中过度使用封装,因为它会得到又长又复杂的代码。