Python学习之面向对象基础

python的面向对象和以前学的c++,Java都是一般,大同小异,面向对象基础先谈谈类的构造,编写,属性和方法的可见性等等

1.定义类,创建和使用对象

#定义类
class Student(object):
    #类student的初始化方法
    def __init__(self,name,age):
        self._name=name
        self._age=age
    def study(self,cname):
        print("%s正在学习:%s"%(self._name,cname))
    def movie(self):
        if self._age <= 18:
            print("%s只能看熊大熊二!"%self._name)
        else:
            print("%s正在看爱情动作片!"%self._name)
#创建和使用对象
def main():
    student1=Student('wbb',21)
    student1.study('python程序设计')
    student1.movie()
if __name__=='__main__':
    main()

2.属性和方法的可见性

Python在这个地方和其他语言还是有些区别的,其他语言可以设置属性为私有的(private)或者受保护的(protected),来限制对属性和方法的直接访问,但是python只有公有的和私有的,而且python中私有的只是一种形式,外界仍然可以访问到。所以,建议在python中将属性和方法的可见性定为公有的,但是你可以在属性名前加个单下划线,但这仅仅只是一种暗示,提醒你访问时要小心了,并不是python的语法,毕竟你得为自己的行为负责

私有属性和方法外部不能直接访问

class Test:
    #属性名以双下划线开头表示私有的
    def __init__(self,foo):
        self.__foo=foo
    #私有方法
    def __bar(self):
        print(self.__foo)
        print('__bar')
def main():
    test=Test('hello')
    #AttributeError: 'Test' object has no attribute '__bar'
    test.__bar()
    print(test.__foo)

if __name__=='__main__':
    main()

python的私有并不是完全不能访问,其实也可以访问,所有不建议设为私有的,可以以单下划线开头,表示一种暗示

class Test:
    #属性名以双下划线开头表示私有的
    def __init__(self,foo):
        self.__foo=foo
    #私有方法
    def __bar(self):
        print(self.__foo)
        print('__bar')
def main():
    test=Test('hello')
    test._Test__bar()
    print(test._Test__foo)

if __name__=='__main__':
    main()

运行结果如下图:

posted @ 2019-07-30 15:42  极限之旅  阅读(278)  评论(0编辑  收藏  举报