09-15-周一_16-05-58

This commit is contained in:
2025-09-15 16:05:59 +08:00
parent c09e949cd3
commit 44510de885

View File

@@ -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) # 不可在外部访问
@@ -147,39 +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()
obj.__foo # 通过对象访问 ==> 错误
obj.func() # 类内部访问 ==> 正确
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()
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