Python 面向对象(一)self 封装

1.self 参数

class Foo:
    def start(self,value):
        print(self,type(self),value) # <__main__.Foo object at 0x0000000003640AC8> <class '__main__.Foo'> aaa

print(Foo,type(Foo))  # <class '__main__.Foo'> <class 'type'>
f_obj = Foo()
print(f_obj,type(f_obj)) #<__main__.Foo object at 0x0000000003640AC8> <class '__main__.Foo'>
f_obj.start('aaa') #传递了两个参数,一个将f_obj传给self,一个是将aaa传给value
# 类中多个函数使用同一个参数,可以把这个变量封装到对象中
# class student:
#     def name(self,name,school):
#         print('i am %s i am in %s'% (name,school))
#     def like(self,school):
#         print('i like my school %s'% school)
#
# stu = student()
# stu.name('zhangsan','qinghua')
# stu.like('qinghua')

class student:
    def name(self,name): # self参数传递的就是对象
        print('i am %s i am in %s'% (name,self.school)) # 直接通过self.school 就访问到了变量
    def like(self):
        print('i like my school %s'% self.school)

stu = student()
stu.school = 'qinghua'  #将变量封装到对象中
stu.name('zhangsan')
stu.like()

 

#推荐使用这种封装方法
class student:
    def __init__(self,name,school): #构造方法 
        self.country = 'china' #所有对象都有这个变量
        self.name = name
        self.school = school
    def getcountry(self):
        return self.country
    def getname(self):
        return self.name
    def getschcool(self):
        return self.school

stu1 = student('zhangsan','qinghua') #实例化对象 执行__init__方法,将参数封装到对象
print(stu1.getcountry()) #china
print(stu1.getname()) #zhangsan
print(stu1.getschcool())#qinghua
stu2 = student('lisi','beida')
print(stu2.getcountry()) #china
print(stu2.getname())#lisi
print(stu2.getschcool())#beida

 

posted @ 2017-04-29 19:35  1916  阅读(201)  评论(0)    收藏  举报