为什么第一个例子可以正常工作
class Test:
Name = "Krishna"
t1 = Test()
print(t1.Name)
但第二个例子为什么不行
class Student:
def __init__(self,name):
pass # pass指明这个方法什么也不做
name = ""
marks = ""
# 这个方法的作用是通过字符串中的第一个-作为分隔线,生成Student实例
# 然后将name和marks从字符串中分别提取出来
@classmethod
def from_string(cls,name):
temp = False
for i in name:
if temp == False:
if(i!='-'):
cls.name += i
else:
temp=True
else:
cls.marks += i
s1 = Student.from_string("Krishna-90")
print(s1.name)
原因是class变量和实例变量的区别
class Student:
def __init__(self/name):
self.name = ""
self.marks = ""
# 但是注意实例方法不是通过类名调用的,而是通过实例对象调用的
def from_string(self,name):
temp = False
for i in name:
if temp == False:
if(i!='-'):
self.name += i
else:
temp=True
else:
self.marks += i
s1 = Student()
s1.from_string("Krishna-90")
print(s1.name)
评论 (0)