这是Python中封装的一个例子吗

问题描述 投票:0回答:1
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也可以认为是一个封装的例子,因为该函数可以被对象使用,但不能被对象修改

我想知道这是否是封装的一个例子,如果是的话,如何,如果不是,为什么不

python oop encapsulation
1个回答
0
投票

您的代码没有显示出的封装指示。封装是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 中过度使用封装,因为它会得到又长又复杂的代码。

© www.soinside.com 2019 - 2024. All rights reserved.