Python入门与进阶(9-7)

2018-05-03  本文已影响10人  buaishengqi

9-7 类与对象的变量查找顺序

class Student():
    name = ''
    age = 0 
    def __init__(self,name,age): 
        name = name 
        age = age
#print('student')
        
    def do_homework(self):
        print('homework')
     
student1 = Student('石敢当',18) 

print(student1.name) 
#打印结果如图1,什么也没有!
# 类变量和构造函数里面的对象同模块里的局部变量和全局变量对比是错误的。
#那么为什么打印的是空?什么也没有呢?打印的明明就是实例变量,为什么会出现空呢?
# 看看下面的例子!
class Student():
    name = 'xiaoyu'
    age = 0 
    def __init__(self,name,age): 
        name = name #通过self.来赋值实例变量。此处没有
        age = age
#print('student')
        
    def do_homework(self):
        print('homework')
     
student1 = Student('石敢当',18) 

print(student1.name)
print(Student.name)
# 如图 2,打印了两个变量,实例变量和类变量都是相同的。为什么?



class Student():
    name = 'xiaoyu'
    age = 0 
    def __init__(self,name,age): 
        name = name #通过self.来赋值实例变量。此处没有
        age = age
#print('student')
        
    def do_homework(self):
        print('homework')
     
student1 = Student('石敢当',18) 
print(student1.__dict__)  #打印的结果是空的字典,如图3
#print(student1.name)
#print(Student.name)

# 当我们加完self以后看看结果
class Student():
    name = 'xiaoyu'
    age = 0 
    def __init__(self,name,age): 
        self.name = name #通过self.来赋值实例变量。此处没有
        self.age = age
#print('student')
        
    def do_homework(self):
        print('homework')
     
student1 = Student('石敢当',18) 
print(student1.__dict__) 
# 打印结果如图4

# 如果尝试去寻找实例变量的时候,如果没有找到,Python并不会返回空,它会去类变量里面找



# 看看类变量的dict!
class Student():
    name = 'xiaoyu'
    age = 0 
    def __init__(self,name,age): 
        self.name = name #通过self.来赋值实例变量。此处没有
        self.age = age
#print('student')
        
    def do_homework(self):
        print('homework')
     
student1 = Student('石敢当',18) 
print(student1.__dict__) 
print(Student.__dict__)#打印结果如图5
01.jpg 02.jpg 03.jpg 04.jpg 5.jpg
上一篇 下一篇

猜你喜欢

热点阅读