我发布了两段代码,第一段有两个实例:
class student:
def display_name(self, name):
print "student name is ", name
def class_room(self, standard):
print "Student Section is ", standard
instance1 = student()
instance2 = student()
instance1.display_name('Tom')
instance1.class_room('12th "B"')
instance2.display_name('Dick')
instance2.class_room('11th "B"')
第二个有一个实例:
class student:
def display_name(self, name):
print "student name is ", name
def class_room(self, standard):
print "Student Section is ", standard
instance1 = student()
instance1.display_name('Tom')
instance1.class_room('12th "B"')
instance1.display_name('Dick')
instance1.class_room('11th "B"')
有什么区别?
答案 0 :(得分:2)
我认为你误解了课程的使用。在您的示例中,您的类实例基本上没有状态。这些函数不会使用它们的self
参数,也可能是静态类方法。这就是为什么你的两个例子会产生相同的输出,它们与他们调用的实例无关。
通常,您将拥有该类的每个实例都可以设置的类的属性。然后在各种方法中,您可以从self
实例访问这些属性。例如
class Student:
def __init__(self, name, standard):
self.name = name
self.standard = standard
def display_name(self):
return 'student name is {}'.format(self.name)
def class_room(self):
return 'student section is {}'.format(self.standard)
现在你可以制作两个实例
>>> instance1 = Student('Tom', '12th B')
>>> instance2 = Student('Dick', '11th B')
现在你可以从这些实例中调用这些方法,它将使用它们的属性
>>> instance1.display_name()
'student name is Tom'
>>> instance2.display_name()
'student name is Dick'
>>> instance1.class_room()
'student section is 12th B'
>>> instance2.class_room()
'student section is 11th B'