09-15-周一_16-05-58
This commit is contained in:
@@ -71,12 +71,12 @@ class C:
|
|||||||
name = "公有静态字段"
|
name = "公有静态字段"
|
||||||
|
|
||||||
def func(self):
|
def func(self):
|
||||||
print (C.name)
|
print(C.name)
|
||||||
|
|
||||||
class D(C):
|
class D(C):
|
||||||
|
|
||||||
def show(self):
|
def show(self):
|
||||||
print (C.name)
|
print(C.name)
|
||||||
|
|
||||||
|
|
||||||
print(C.name) # 类访问
|
print(C.name) # 类访问
|
||||||
@@ -94,12 +94,12 @@ class C:
|
|||||||
__name = "私有静态字段"
|
__name = "私有静态字段"
|
||||||
|
|
||||||
def func(self):
|
def func(self):
|
||||||
print (C.__name)
|
print(C.__name)
|
||||||
|
|
||||||
class D(C):
|
class D(C):
|
||||||
|
|
||||||
def show(self):
|
def show(self):
|
||||||
print (C.__name)
|
print(C.__name)
|
||||||
|
|
||||||
|
|
||||||
print(C.__name) # 不可在外部访问
|
print(C.__name) # 不可在外部访问
|
||||||
@@ -147,39 +147,18 @@ class C:
|
|||||||
self.__foo = "私有字段"
|
self.__foo = "私有字段"
|
||||||
|
|
||||||
def func(self):
|
def func(self):
|
||||||
print self.foo # 类内部访问
|
print(self.__foo) # 类内部访问
|
||||||
|
|
||||||
|
|
||||||
class D(C):
|
class D(C):
|
||||||
|
|
||||||
def show(self):
|
def show(self):
|
||||||
print self.foo # 派生类中访问
|
print(self.__foo) # 派生类中访问
|
||||||
|
|
||||||
|
|
||||||
obj = C()
|
obj = C()
|
||||||
|
|
||||||
obj.__foo # 通过对象访问 ==> 错误
|
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.func() # 类内部访问 ==> 正确
|
obj.func() # 类内部访问 ==> 正确
|
||||||
|
|
||||||
obj_son = D()
|
obj_son = D()
|
||||||
@@ -240,11 +219,11 @@ obj.__add() # 派生类中不能访问
|
|||||||
|
|
||||||
总结:
|
总结:
|
||||||
|
|
||||||
对于这些私有成员来说,他们只能在类的内部使用,不能再类的外部以及派生类中使用.
|
对于这些私有成员来说,他们只能在类的内部使用,不能在类的外部以及派生类中使用.
|
||||||
|
|
||||||
**ps:非要访问私有成员的话,可以通过 对象._类__属性名,但是绝对不允许!!!**
|
**ps:非要访问私有成员的话,可以通过 对象._类__属性名,但是绝对不允许!!!**
|
||||||
|
|
||||||
为什么可以通过._类__私有成员名访问呢?因为类在创建时,如果遇到了私有成员(包括私有静态字段,私有普通字段,私有方法)它会将其保存在内存时自动在前面加上_类名.
|
为什么可以通过`._类__私有成员名` 访问呢?因为类在创建时,如果遇到了私有成员(包括私有静态字段,私有普通字段,私有方法)它会将其保存在内存时自动在前面加上_类名.
|
||||||
|
|
||||||
## 类的其他成员
|
## 类的其他成员
|
||||||
|
|
||||||
@@ -487,7 +466,7 @@ print(issubclass(C,A))
|
|||||||
思考:那么 list str tuple dict等这些类与 Iterble类 的关系是什么?
|
思考:那么 list str tuple dict等这些类与 Iterble类 的关系是什么?
|
||||||
|
|
||||||
```python
|
```python
|
||||||
from collections import Iterable
|
from collections.abc import Iterable
|
||||||
|
|
||||||
print(isinstance([1,2,3], list)) # True
|
print(isinstance([1,2,3], list)) # True
|
||||||
print(isinstance([1,2,3], Iterable)) # True
|
print(isinstance([1,2,3], Iterable)) # True
|
||||||
|
Reference in New Issue
Block a user