Được rồi, lần này tôi sẽ cố gắng và cực kỳ rõ ràng.
class Yes:
def __init__[self]:
self.a=1
def yes[self]:
if self.a==1:
print "Yes"
else:
print "No, but yes"
class No[Yes]:
def no[self]:
if self.a==1:
print "No"
else:
print "Yes, but no"
self.a-=1 #Note this line
Bây giờ, trong khi chạy:
Yes[].yes[]
No[].no[]
Yes[].yes[]
No[].no[]
Tôi muốn nó in ra:
Yes
No
No, but yes
Yes, but no
Nó đưa cho tôi:
Yes
No
Yes
No
Bây giờ, tôi biết lý do tại sao là vì tôi chỉ thay đổi giá trị của bản thân. Trong không có lớp [hãy nhớ dòng đó?]. Tôi muốn biết liệu dù sao cũng có thể thay đổi nó trong lớp có trong khi vẫn ở trong lớp không [như nếu có thứ gì đó mà tôi có thể cắm vào vị trí của bản thân.a- = 1 sẽ hoạt động].
Hỏi ngày 3 tháng 4 năm 2013 lúc 14:42Apr 3, 2013 at 14:42
4
Tôi không chắc bạn có thể sử dụng gì cho việc này, nhưng ...
Bạn muốn thao tác một biến lớp, nhưng bạn tiếp tục giải quyết các biến thể hiện. Nếu bạn muốn một biến lớp, hãy sử dụng một biến lớp!
class Yes:
a = 1 # initialize class var.
def __init__[self]:
self.a = 1 # point of this is what?
def yes[self]:
if Yes.a==1: # check class var
print "Yes"
else:
print "No, but yes"
class No[Yes]:
def no[self]:
if Yes.a==1: # check class var
print "No"
else:
print "Yes, but no"
Yes.a-=1 # alter class var
Đã trả lời ngày 3 tháng 4 năm 2013 lúc 14:51Apr 3, 2013 at 14:51
Francis Avilafrancis AvilaFrancis Avila
30.8k6 Huy hiệu vàng57 Huy hiệu bạc95 Huy hiệu Đồng6 gold badges57 silver badges95 bronze badges
6
Nó xuất hiện những gì bạn muốn sử dụng là một biến tĩnh chứ không phải là một biến thể hiện. Một biến tĩnh được chia sẻ giữa tất cả các trường hợp của lớp.
class Yes:
a = 1
def __init__[self]:
pass
def yes[self]:
if Yes.a==1:
print "Yes"
else:
print "No, but yes"
class No[Yes]:
def no[self]:
if Yes.a==1:
print "No"
else:
print "Yes, but no"
Yes.a-=1 #Note this line
Yes[].yes[]
No[].no[]
Yes[].yes[]
No[].no[]
Sẽ đầu ra:
Yes
No
No, but yes
Yes, but no
Đã trả lời ngày 3 tháng 4 năm 2013 lúc 14:52Apr 3, 2013 at 14:52
Jesse Vogtjesse VogtJesse Vogt
15.9K14 Huy hiệu vàng58 Huy hiệu bạc71 Huy hiệu đồng14 gold badges58 silver badges71 bronze badges
1
Trong thực tế trước đây, chúng ta đã thấy rằng Python không có từ khóa tĩnh. Tất cả các biến được gán một giá trị trong khai báo lớp là các biến lớp
Chúng ta nên cẩn thận khi thay đổi giá trị của biến lớp. Nếu chúng ta cố gắng thay đổi biến lớp bằng cách sử dụng đối tượng, một biến thể mới [hoặc không tĩnh] cho đối tượng cụ thể đó sẽ được tạo và biến này, các biến lớp này. Dưới đây là chương trình Python để chứng minh điều tương tự.. If we try to change class variable using object, a new instance [or non-static] variable for that particular object is created and this variable shadows the class variables. Below is Python program to demonstrate the same.
class
Yes[].yes[]
No[].no[]
Yes[].yes[]
No[].no[]
0Yes[].yes[]
No[].no[]
Yes[].yes[]
No[].no[]
1Yes[].yes[]
No[].no[]
Yes[].yes[]
No[].no[]
2Yes[].yes[]
No[].no[]
Yes[].yes[]
No[].no[]
3 ________ 14 & nbsp; & nbsp; & nbsp; & nbsp;Yes[].yes[]
No[].no[]
Yes[].yes[]
No[].no[]
1Yes[].yes[]
No[].no[]
Yes[].yes[]
No[].no[]
6 Yes[].yes[]
No[].no[]
Yes[].yes[]
No[].no[]
7Yes[].yes[]
No[].no[]
Yes[].yes[]
No[].no[]
8Yes[].yes[]
No[].no[]
Yes[].yes[]
No[].no[]
9Yes
No
No, but yes
Yes, but no
0Yes[].yes[]
No[].no[]
Yes[].yes[]
No[].no[]
8Yes
No
No, but yes
Yes, but no
22213 Yes
No
No, but yes
Yes, but no
4Yes
No
No, but yes
Yes, but no
0Yes[].yes[]
No[].no[]
Yes[].yes[]
No[].no[]
8Yes
No
No, but yes
Yes, but no
7Yes[].yes[]
No[].no[]
Yes[].yes[]
No[].no[]
3 Yes
No
No, but yes
Yes, but no
9Yes
No
Yes
No
0Yes[].yes[]
No[].no[]
Yes[].yes[]
No[].no[]
3 Yes
No
Yes
No
2Yes
No
Yes
No
3Yes
No
Yes
No
4Yes
No
Yes
No
5Yes
No
Yes
No
6Yes
No
Yes
No
7Yes[].yes[]
No[].no[]
Yes[].yes[]
No[].no[]
3 Yes
No
Yes
No
2class Yes:
a = 1 # initialize class var.
def __init__[self]:
self.a = 1 # point of this is what?
def yes[self]:
if Yes.a==1: # check class var
print "Yes"
else:
print "No, but yes"
class No[Yes]:
def no[self]:
if Yes.a==1: # check class var
print "No"
else:
print "Yes, but no"
Yes.a-=1 # alter class var
0Yes
No
Yes
No
4class Yes:
a = 1 # initialize class var.
def __init__[self]:
self.a = 1 # point of this is what?
def yes[self]:
if Yes.a==1: # check class var
print "Yes"
else:
print "No, but yes"
class No[Yes]:
def no[self]:
if Yes.a==1: # check class var
print "No"
else:
print "Yes, but no"
Yes.a-=1 # alter class var
2Yes
No
Yes
No
6class Yes:
a = 1 # initialize class var.
def __init__[self]:
self.a = 1 # point of this is what?
def yes[self]:
if Yes.a==1: # check class var
print "Yes"
else:
print "No, but yes"
class No[Yes]:
def no[self]:
if Yes.a==1: # check class var
print "No"
else:
print "Yes, but no"
Yes.a-=1 # alter class var
4 class Yes:
a = 1 # initialize class var.
def __init__[self]:
self.a = 1 # point of this is what?
def yes[self]:
if Yes.a==1: # check class var
print "Yes"
else:
print "No, but yes"
class No[Yes]:
def no[self]:
if Yes.a==1: # check class var
print "No"
else:
print "Yes, but no"
Yes.a-=1 # alter class var
5class Yes:
a = 1 # initialize class var.
def __init__[self]:
self.a = 1 # point of this is what?
def yes[self]:
if Yes.a==1: # check class var
print "Yes"
else:
print "No, but yes"
class No[Yes]:
def no[self]:
if Yes.a==1: # check class var
print "No"
else:
print "Yes, but no"
Yes.a-=1 # alter class var
4 class Yes:
a = 1 # initialize class var.
def __init__[self]:
self.a = 1 # point of this is what?
def yes[self]:
if Yes.a==1: # check class var
print "Yes"
else:
print "No, but yes"
class No[Yes]:
def no[self]:
if Yes.a==1: # check class var
print "No"
else:
print "Yes, but no"
Yes.a-=1 # alter class var
7class Yes:
a = 1 # initialize class var.
def __init__[self]:
self.a = 1 # point of this is what?
def yes[self]:
if Yes.a==1: # check class var
print "Yes"
else:
print "No, but yes"
class No[Yes]:
def no[self]:
if Yes.a==1: # check class var
print "No"
else:
print "Yes, but no"
Yes.a-=1 # alter class var
8class Yes:
a = 1 # initialize class var.
def __init__[self]:
self.a = 1 # point of this is what?
def yes[self]:
if Yes.a==1: # check class var
print "Yes"
else:
print "No, but yes"
class No[Yes]:
def no[self]:
if Yes.a==1: # check class var
print "No"
else:
print "Yes, but no"
Yes.a-=1 # alter class var
4 class Yes:
a = 1
def __init__[self]:
pass
def yes[self]:
if Yes.a==1:
print "Yes"
else:
print "No, but yes"
class No[Yes]:
def no[self]:
if Yes.a==1:
print "No"
else:
print "Yes, but no"
Yes.a-=1 #Note this line
Yes[].yes[]
No[].no[]
Yes[].yes[]
No[].no[]
0class Yes:
a = 1
def __init__[self]:
pass
def yes[self]:
if Yes.a==1:
print "Yes"
else:
print "No, but yes"
class No[Yes]:
def no[self]:
if Yes.a==1:
print "No"
else:
print "Yes, but no"
Yes.a-=1 #Note this line
Yes[].yes[]
No[].no[]
Yes[].yes[]
No[].no[]
1class Yes:
a = 1
def __init__[self]:
pass
def yes[self]:
if Yes.a==1:
print "Yes"
else:
print "No, but yes"
class No[Yes]:
def no[self]:
if Yes.a==1:
print "No"
else:
print "Yes, but no"
Yes.a-=1 #Note this line
Yes[].yes[]
No[].no[]
Yes[].yes[]
No[].no[]
2Yes[].yes[]
No[].no[]
Yes[].yes[]
No[].no[]
3 class Yes:
a = 1
def __init__[self]:
pass
def yes[self]:
if Yes.a==1:
print "Yes"
else:
print "No, but yes"
class No[Yes]:
def no[self]:
if Yes.a==1:
print "No"
else:
print "Yes, but no"
Yes.a-=1 #Note this line
Yes[].yes[]
No[].no[]
Yes[].yes[]
No[].no[]
4class Yes:
a = 1 # initialize class var.
def __init__[self]:
self.a = 1 # point of this is what?
def yes[self]:
if Yes.a==1: # check class var
print "Yes"
else:
print "No, but yes"
class No[Yes]:
def no[self]:
if Yes.a==1: # check class var
print "No"
else:
print "Yes, but no"
Yes.a-=1 # alter class var
4 class Yes:
a = 1
def __init__[self]:
pass
def yes[self]:
if Yes.a==1:
print "Yes"
else:
print "No, but yes"
class No[Yes]:
def no[self]:
if Yes.a==1:
print "No"
else:
print "Yes, but no"
Yes.a-=1 #Note this line
Yes[].yes[]
No[].no[]
Yes[].yes[]
No[].no[]
6class Yes:
a = 1 # initialize class var.
def __init__[self]:
self.a = 1 # point of this is what?
def yes[self]:
if Yes.a==1: # check class var
print "Yes"
else:
print "No, but yes"
class No[Yes]:
def no[self]:
if Yes.a==1: # check class var
print "No"
else:
print "Yes, but no"
Yes.a-=1 # alter class var
4 class Yes:
a = 1 # initialize class var.
def __init__[self]:
self.a = 1 # point of this is what?
def yes[self]:
if Yes.a==1: # check class var
print "Yes"
else:
print "No, but yes"
class No[Yes]:
def no[self]:
if Yes.a==1: # check class var
print "No"
else:
print "Yes, but no"
Yes.a-=1 # alter class var
7class Yes:
a = 1 # initialize class var.
def __init__[self]:
self.a = 1 # point of this is what?
def yes[self]:
if Yes.a==1: # check class var
print "Yes"
else:
print "No, but yes"
class No[Yes]:
def no[self]:
if Yes.a==1: # check class var
print "No"
else:
print "Yes, but no"
Yes.a-=1 # alter class var
8class Yes:
a = 1 # initialize class var.
def __init__[self]:
self.a = 1 # point of this is what?
def yes[self]:
if Yes.a==1: # check class var
print "Yes"
else:
print "No, but yes"
class No[Yes]:
def no[self]:
if Yes.a==1: # check class var
print "No"
else:
print "Yes, but no"
Yes.a-=1 # alter class var
4 class Yes:
a = 1
def __init__[self]:
pass
def yes[self]:
if Yes.a==1:
print "Yes"
else:
print "No, but yes"
class No[Yes]:
def no[self]:
if Yes.a==1:
print "No"
else:
print "Yes, but no"
Yes.a-=1 #Note this line
Yes[].yes[]
No[].no[]
Yes[].yes[]
No[].no[]
0class Yes:
a = 1
def __init__[self]:
pass
def yes[self]:
if Yes.a==1:
print "Yes"
else:
print "No, but yes"
class No[Yes]:
def no[self]:
if Yes.a==1:
print "No"
else:
print "Yes, but no"
Yes.a-=1 #Note this line
Yes[].yes[]
No[].no[]
Yes[].yes[]
No[].no[]
1Output:
Initially a.stream = cse b.stream = cse After changing a.stream a.stream = ece b.stream = cse
2class Yes:
a = 1
def __init__[self]:
pass
def yes[self]:
if Yes.a==1:
print "Yes"
else:
print "No, but yes"
class No[Yes]:
def no[self]:
if Yes.a==1:
print "No"
else:
print "Yes, but no"
Yes.a-=1 #Note this line
Yes[].yes[]
No[].no[]
Yes[].yes[]
No[].no[]
3 Yes[].yes[]
No[].no[]
Yes[].yes[]
No[].no[]
4class Yes:
a = 1
def __init__[self]:
pass
def yes[self]:
if Yes.a==1:
print "Yes"
else:
print "No, but yes"
class No[Yes]:
def no[self]:
if Yes.a==1:
print "No"
else:
print "Yes, but no"
Yes.a-=1 #Note this line
Yes[].yes[]
No[].no[]
Yes[].yes[]
No[].no[]
Yes
No
No, but yes
Yes, but no
3Yes
No
No, but yes
Yes, but no
4Yes
No
No, but yes
Yes, but no
5class
Yes[].yes[]
No[].no[]
Yes[].yes[]
No[].no[]
0Yes[].yes[]
No[].no[]
Yes[].yes[]
No[].no[]
1Yes[].yes[]
No[].no[]
Yes[].yes[]
No[].no[]
2Yes[].yes[]
No[].no[]
Yes[].yes[]
No[].no[]
3 ________ 14 & nbsp; & nbsp; & nbsp; & nbsp;Yes[].yes[]
No[].no[]
Yes[].yes[]
No[].no[]
1Initially a.stream = cse b.stream = cse After changing a.stream a.stream = ece b.stream = cse3
Yes
No
No, but yes
Yes, but no
0Initially a.stream = cse b.stream = cse After changing a.stream a.stream = ece b.stream = cse5
Yes
No
No, but yes
Yes, but no
0Initially a.stream = cse b.stream = cse After changing a.stream a.stream = ece b.stream = cse7
Initially a.stream = cse b.stream = cse After changing a.stream a.stream = ece b.stream = cse8
Initially a.stream = cse b.stream = cse After changing a.stream a.stream = ece b.stream = cse9
a.tream = cse Class variable changes to mec Value of variable steam for each object a.stream = mec b.stream = mec0
a.tream = cse Class variable changes to mec Value of variable steam for each object a.stream = mec b.stream = mec1
a.tream = cse Class variable changes to mec Value of variable steam for each object a.stream = mec b.stream = mec2
a.tream = cse Class variable changes to mec Value of variable steam for each object a.stream = mec b.stream = mec3
class Yes:
a = 1 # initialize class var.
def __init__[self]:
self.a = 1 # point of this is what?
def yes[self]:
if Yes.a==1: # check class var
print "Yes"
else:
print "No, but yes"
class No[Yes]:
def no[self]:
if Yes.a==1: # check class var
print "No"
else:
print "Yes, but no"
Yes.a-=1 # alter class var
8a.tream = cse Class variable changes to mec Value of variable steam for each object a.stream = mec b.stream = mec5
a.tream = cse Class variable changes to mec Value of variable steam for each object a.stream = mec b.stream = mec6
a.tream = cse Class variable changes to mec Value of variable steam for each object a.stream = mec b.stream = mec7
a.tream = cse Class variable changes to mec Value of variable steam for each object a.stream = mec b.stream = mec2
a.tream = cse Class variable changes to mec Value of variable steam for each object a.stream = mec b.stream = mec9
Initially a.stream = cse b.stream = cse After changing a.stream a.stream = ece b.stream = cse8
class
1class
2class
3
a.tream = cse Class variable changes to mec Value of variable steam for each object a.stream = mec b.stream = mec2
class
5a.tream = cse Class variable changes to mec Value of variable steam for each object a.stream = mec b.stream = mec2
class Yes:
a = 1 # initialize class var.
def __init__[self]:
self.a = 1 # point of this is what?
def yes[self]:
if Yes.a==1: # check class var
print "Yes"
else:
print "No, but yes"
class No[Yes]:
def no[self]:
if Yes.a==1: # check class var
print "No"
else:
print "Yes, but no"
Yes.a-=1 # alter class var
7class Yes:
a = 1 # initialize class var.
def __init__[self]:
self.a = 1 # point of this is what?
def yes[self]:
if Yes.a==1: # check class var
print "Yes"
else:
print "No, but yes"
class No[Yes]:
def no[self]:
if Yes.a==1: # check class var
print "No"
else:
print "Yes, but no"
Yes.a-=1 # alter class var
8a.tream = cse Class variable changes to mec Value of variable steam for each object a.stream = mec b.stream = mec2
class Yes:
a = 1
def __init__[self]:
pass
def yes[self]:
if Yes.a==1:
print "Yes"
else:
print "No, but yes"
class No[Yes]:
def no[self]:
if Yes.a==1:
print "No"
else:
print "Yes, but no"
Yes.a-=1 #Note this line
Yes[].yes[]
No[].no[]
Yes[].yes[]
No[].no[]
0Yes
No
No, but yes
Yes, but no
2Yes[].yes[]
No[].no[]
Yes[].yes[]
No[].no[]
1Yes[].yes[]
No[].no[]
Yes[].yes[]
No[].no[]
6 Yes[].yes[]
No[].no[]
Yes[].yes[]
No[].no[]
7Yes[].yes[]
No[].no[]
Yes[].yes[]
No[].no[]
8Yes[].yes[]
No[].no[]
Yes[].yes[]
No[].no[]
9a.tream = cse Class variable changes to mec Value of variable steam for each object a.stream = mec b.stream = mec
Yes
No
No, but yes
Yes, but no
0Yes[].yes[]
No[].no[]
Yes[].yes[]
No[].no[]
8Yes
No
No, but yes
Yes, but no
22213 Yes
No
No, but yes
Yes, but no
400 0
Yes
No
No, but yes
Yes, but no
0Yes[].yes[]
No[].no[]
Yes[].yes[]
No[].no[]
8Yes
No
No, but yes
Yes, but no
7Yes[].yes[]
No[].no[]
Yes[].yes[]
No[].no[]
3 Yes
No
No, but yes
Yes, but no
9
Yes
No
No, but yes
Yes, but no
Yes[].yes[]
No[].no[]
Yes[].yes[]
No[].no[]
Yes
No
No, but yes
Yes, but no
Yes[].yes[]
No[].no[]
Yes[].yes[]
No[].no[]
Yes
No
No, but yes
Yes, but no
Yes
No
Yes
No
0Yes[].yes[]
No[].no[]
Yes[].yes[]
No[].no[]
3 Yes
No
Yes
No
2Yes
No
Yes
No
3Yes
No
Yes
No
4Yes
No
Yes
No
5Yes
No
Yes
No
6
Yes
No
Yes
No
Yes[].yes[]
No[].no[]
Yes[].yes[]
No[].no[]
Yes
No
Yes
No
Yes
No
Yes
No
Yes
No
Yes
No
Yes
No
Yes
No
Yes
No
Yes
No