問(wèn):如果我想在同一個(gè)類中共用一個(gè)變量,但不希望子類繼承,該怎么辦呢?
答:那就在類中將這個(gè)變量加上global修飾符,
示例代碼中:
1)x可被類parent內(nèi)部使用,但不能被子類調(diào)用
2)y的作用域只是在parent.__init__方法內(nèi)
3)z可被類parent內(nèi)部使用也可被子類調(diào)用
示例代碼如下:

testGlobal.py
?1
#!/usr/bin/python
?2
#?-*-?coding:?utf-8?-*-
?3
#?Filename:?testGlobal.py
?4
#?Author??:?水晶魚(yú)
?5
#?Date????:?2006-06-08
?6
class?parent:
?7
????global?x????#這就是只能供類內(nèi)部使用的變量,子類不能訪問(wèn)
?8
????x='xxxx'????#注意:賦值與定義要分開(kāi)寫(xiě)
?9
????def?__init__(self):
10
????????y='yyyy'
11
????????self.z='zzzz'
12
????def?test(self):
13
????????print?"test.x="+x
14
????????
15
class?child(parent):
16
????def?__init__(self):
17
????????parent.__init__(self)
18
19
if?__name__=='__main__':
20
????#試圖訪問(wèn)實(shí)例中的x????????
21
????p=parent()
22
????try:
23
????????print?p.x
24
????except:
25
????????print?"1.不能直接訪問(wèn)實(shí)例中的global變量"
26
27
????#可以供類中其它方法訪問(wèn):
28
????print?'2.通過(guò)test方法才可以訪問(wèn)x:',
29
????p.test()
30
31
????c=child()
32
????#試圖訪問(wèn)父類中的變量----x,結(jié)果是:失敗
33
????try:
34
????????print?c.x
35
????except:
36
????????print?"3.不能訪問(wèn)父類中的global變量"
37
????????
38
????print?"4.但可以通過(guò)父類中的test方法得到:",
39
????c.test()
40
41
????print?"5.可以訪問(wèn)父類中的self變量",c.z
示例代碼輸出結(jié)果為:
C:\Documents and Settings\Administrator\桌面>testGlobal.py
1.不能直接訪問(wèn)實(shí)例中的global變量
2.通過(guò)test方法才可以訪問(wèn)x: test.x=xxxx
3.不能訪問(wèn)父類中的global變量
4.但可以通過(guò)父類中的test方法得到: test.x=xxxx
5.可以訪問(wèn)父類中的self變量 zzzz
答:那就在類中將這個(gè)變量加上global修飾符,
示例代碼中:
1)x可被類parent內(nèi)部使用,但不能被子類調(diào)用
2)y的作用域只是在parent.__init__方法內(nèi)
3)z可被類parent內(nèi)部使用也可被子類調(diào)用
示例代碼如下:


?1

?2

?3

?4

?5

?6

?7

?8

?9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

示例代碼輸出結(jié)果為:
C:\Documents and Settings\Administrator\桌面>testGlobal.py
1.不能直接訪問(wèn)實(shí)例中的global變量
2.通過(guò)test方法才可以訪問(wèn)x: test.x=xxxx
3.不能訪問(wèn)父類中的global變量
4.但可以通過(guò)父類中的test方法得到: test.x=xxxx
5.可以訪問(wèn)父類中的self變量 zzzz