• 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()

    运行结果如下图:

  • 相关阅读:
    hdu6314 容斥+数学
    后缀数组+指针
    F. Dominant Indices
    牛客网挑战赛19 B,C,F
    拓展欧几里得理论基础(含一定证明)
    数字
    vue的自定义树形列表组件(及数据格式转换)
    Activiti实现会签功能
    7种单例模式
    MySQL中数据类型(char(n)、varchar(n)、nchar(n)、nvarchar(n)的区别)(转)
  • 原文地址:https://www.cnblogs.com/andrew3/p/11270475.html
Copyright © 2020-2023  润新知