From 44510de885afb5784b52115ac93c47e05a7296d2 Mon Sep 17 00:00:00 2001 From: Aaron Date: Mon, 15 Sep 2025 16:05:59 +0800 Subject: [PATCH] =?UTF-8?q?09-15-=E5=91=A8=E4=B8=80=5F16-05-58?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 02.面向对象/05.类的成员.md | 45 ++++++++++---------------------------- 1 file changed, 12 insertions(+), 33 deletions(-) diff --git a/02.面向对象/05.类的成员.md b/02.面向对象/05.类的成员.md index e3f9a8e..ec32af5 100644 --- a/02.面向对象/05.类的成员.md +++ b/02.面向对象/05.类的成员.md @@ -71,12 +71,12 @@ class C: name = "公有静态字段" def func(self): - print (C.name) + print(C.name) class D(C): def show(self): - print (C.name) + print(C.name) print(C.name) # 类访问 @@ -94,12 +94,12 @@ class C: __name = "私有静态字段" def func(self): - print (C.__name) + print(C.__name) class D(C): def show(self): - print (C.__name) + print(C.__name) print(C.__name) # 不可在外部访问 @@ -140,29 +140,6 @@ obj_son = D(); obj_son.show() # 派生类中访问 ``` -```python -class C: - - def __init__(self): - self.__foo = "私有字段" - - def func(self): - print self.foo  # 类内部访问 - -class D(C): - - def show(self): - print self.foo # 派生类中访问 - -obj = C() - -obj.__foo # 通过对象访问 ==> 错误 -obj.func() # 类内部访问 ==> 正确 - -obj_son = D(); -obj_son.show() # 派生类中访问 ==> 错误 -``` - ```python class C: @@ -170,16 +147,18 @@ class C: self.__foo = "私有字段" def func(self): - print(self.__foo) # 类内部访问 + print(self.__foo) # 类内部访问 + class D(C): def show(self): - print(self.__foo) # 派生类中访问 + print(self.__foo) # 派生类中访问 + obj = C() -print(obj.__foo) # 通过对象访问 ==> 错误 +obj.__foo # 通过对象访问 ==> 错误 obj.func() # 类内部访问 ==> 正确 obj_son = D() @@ -240,11 +219,11 @@ obj.__add() # 派生类中不能访问 总结: -对于这些私有成员来说,他们只能在类的内部使用,不能再类的外部以及派生类中使用. +对于这些私有成员来说,他们只能在类的内部使用,不能在类的外部以及派生类中使用. **ps:非要访问私有成员的话,可以通过 对象._类__属性名,但是绝对不允许!!!** -为什么可以通过._类__私有成员名访问呢?因为类在创建时,如果遇到了私有成员(包括私有静态字段,私有普通字段,私有方法)它会将其保存在内存时自动在前面加上_类名. +为什么可以通过`._类__私有成员名` 访问呢?因为类在创建时,如果遇到了私有成员(包括私有静态字段,私有普通字段,私有方法)它会将其保存在内存时自动在前面加上_类名. ## 类的其他成员 @@ -487,7 +466,7 @@ print(issubclass(C,A)) 思考:那么 list str tuple dict等这些类与 Iterble类 的关系是什么? ```python -from collections import Iterable +from collections.abc import Iterable print(isinstance([1,2,3], list)) # True print(isinstance([1,2,3], Iterable)) # True