zoukankan      html  css  js  c++  java
  • 封装

    # 类的三大特性:继承,封装,多态。

    # 封装?

    class A:

    def __init__(self,name):
    self.name = name

    obj = A('二狗')
    # 广义的封装:就是将一些内容放到一个'容器'中.
    # 狭义的封装:私有。
    # 类的结构:
    class B:
        country = 'China'  # 静态变量(属性,字段)
        __name = 'alex'  # 私有静态变量
    
        def func(self):  # 动态普通方法
            pass
    
        def __func(self):  # 私有方法
            pass
    
        def __init__(self,name,age):  # 特殊方法:双下方法
            self.name = name
            self.__age = age  # 私有对象属性
        @property  # 属性
        def f1(self):
            pass
    
        @classmethod  # 类方法
        def func2(self):
            pass
    
        @staticmethod  # 静态方法
        def func3(self):
            pass
    # 私有成员:私有变量,私有对象属性,私有方法
    # 私有成员:类外面不可以访问,派生类不可以访问,类内面可以访问
    class A:
        country = 'China'  # 静态变量(属性,字段)
        __name = 'alex'  # 私有静态变量
        def __init__(self, name, age):
            self.name = name
            self.__age = age
    
        def func(self):  # 动态普通方法
            print(self.__name)
    
        def __func(self):  # 私有方法
            pass
    
    class B(A):
        def func2(self):
            print(self.__name)
    
    obj = A('二狗', 18)
    print(obj.country) # 类外面可以访问
    print(obj.__name)  # 私有:类外面不可以访问
    
    obj.func()  # 私有:类内面可以访问
    
    o1 = B('脸哥', 25)
    o1.func2()  # 私有:派生类不可以访问
    
    obj = A('二狗', 18)
    print(A.__dict__)
    print(obj._A__name)  # 这样可以访问,但是千万不要这样访问,这个是python犯懒了,c语言中私有成员在类外面是不能访问的。

     

  • 相关阅读:
    2012年互联网教育行业观察
    SharePoint 2013的简单介绍
    让Node.js在Azure上运行3
    让Node.js在Azure上运行2
    有一个字符串 "I am a good man",设计一个函数,返回 "man good a am I"。
    json序列化与反序列化
    golang连接mysql数据库进行查询
    简单的WCF服务
    百钱买百鸡问题
    大叔程序员的第九天 @广播启动Activity
  • 原文地址:https://www.cnblogs.com/wangkaiok/p/9987765.html
Copyright © 2011-2022 走看看