#!/usr/bin/python3 class Site: def __init__(self, name, url): self.name = name # public self.__url = url # private def who(self): print('name : ', self.name) print('url : ', self.__url) def __foo(self): # 私有方法 print('这是私有方法') def foo(self): # 公共方法 print('这是公共方法') self.__foo() x = Site('菜鸟教程', 'www.runoob.com') x.who() # 正常输出 x.foo() # 正常输出 x.__foo() # 报错
时间: 2024-04-15 07:26:12 浏览: 19
这段代码定义了一个名为 Site 的类,它具有公共属性和方法以及私有属性和方法。
在这个类中,`name` 是公共属性,可以直接访问和修改。`__url` 是私有属性,在类的内部可以访问和修改,但在类的外部无法直接访问。`who()` 是一个公共方法,用于打印 `name` 和 `__url` 的值。`__foo()` 是一个私有方法,只能在类的内部调用。`foo()` 是一个公共方法,用于调用 `__foo()`。
在代码的最后,创建了一个名为 `x` 的 `Site` 对象,并通过调用 `x.who()` 和 `x.foo()` 分别输出了 `name` 和 `__url` 的值,并调用了 `foo()` 方法。
但是,当尝试通过 `x.__foo()` 访问私有方法时,会引发错误。私有方法只能在类的内部调用,无法在类的外部直接调用。
注意:虽然 Python 中使用双下划线(`__`)作为私有属性和方法的约定,但它们实际上仍然可以被访问和修改,只是不推荐这样做。
相关问题
#! /usr/bin/env python
#!/usr/bin/env python是一种在Python脚本中使用的特殊注释行,用于告诉操作系统在执行这个脚本时使用哪个Python解释器。这种写法的好处是可以避免用户没有将Python安装在默认路径(/usr/bin)下的情况。当系统看到这一行时,会先查找环境变量中的Python安装路径,然后调用对应路径下的解释器程序来执行脚本。相比之下,#!/usr/bin/python这种写法是直接指定了Python解释器的路径,相当于写死了路径。推荐使用#!/usr/bin/env python的写法,因为它可以根据环境设置自动寻找Python目录。\[1\]\[2\]\[3\]
#### 引用[.reference_title]
- *1* [Python脚本](https://blog.csdn.net/Dr_Guo/article/details/50635876)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [#!/usr/bin/env python](https://blog.csdn.net/baidu_38869387/article/details/120078088)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item]
- *3* [Python脚本开头的#!/usr/bin/python](https://blog.csdn.net/qq_38380338/article/details/125637758)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
#!/usr/bin/python
回答: "#!/usr/bin/python"是一种在脚本文件的开头使用的特殊注释,用于指定该脚本使用的Python解释器的路径。\[1\]在这种写法中,脚本会使用固定路径的Python解释器来执行。然而,这种写法可能会导致在某些机器上找不到Python解释器的问题。为了解决这个问题,可以使用"#!/usr/bin/env python"来代替。\[2\]这种写法会通过env命令在系统中查找已存在的环境变量,并执行与该环境变量中定义的Python解释器相对应的版本。\[3\]因此,"#!/usr/bin/env python"更加灵活,可以同时支持Python2和Python3。
#### 引用[.reference_title]
- *1* [#! /usr/bin/python 到底有什么用](https://blog.csdn.net/qq_21148843/article/details/105852821)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* *3* [Python脚本开头的#!/usr/bin/python](https://blog.csdn.net/qq_38380338/article/details/125637758)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]