zoukankan      html  css  js  c++  java
  • 面向对象中的成员

    一、类的成员

    class Foo:
    
        #方法
        def __init__(self,name):
            #实例变量/字段
            self.name = name
    
        #方法
        def func(self):
            pass
    #obj,Foo类的对象
    #obj,Foo类的实例
    obj = Foo("Bob")
    View Code

      成员共分为三类:

        变量:

          实例变量(字段)

              公有实例变量(字段)

              私有实例变量(字段)

          类变量(静态字段)  #当所有对象中有共同的字段时且要改都改要删都删时,可以将实例变量(字段)提取到类变量(静态字段)

              公有类变量(静态字段)

              私有类变量(静态字段)

              实例一:

                 class Foo:

                      #类变量(静态字段)

                      country = "中国"

                      def __init__(self,name):

                        #实例变量(字段)

                        self,name = name

                      def func(self):

                        pass

                 obj1 = Foo("阿萨德")

                 obj2 = Foo("阿斯顿")

                 Foo.country

            如何验证子类知不知道私有字段的存在

    #无法访问
    class
    Base(object): __secret = "私有" class Foo(Base): def func(self): print(self.__secret) print(Foo.__secret) obj = Foo() obj.func()
    #可以访问
    class Base(object):
        __secret = "私有"
        def fw(self):    #在Base内部访问了
            print(Base.__secret)
    class Foo(Base):
        def func(self):
            print(self.__secret)
            print(Foo.__secret)
    obj = Foo()
    obj.fw()

        方法:

          1.实例方法:         

    class Foo(object):
        def __init__(self,name):
            self.name = name
        #实例方法
        def func(self):
            print(self.name)
    obj = Foo("asd")
    obj.func()
    View Code

          2.静态方法:

    class Foo(object):
        def __init__(self,name):
            self.name = name
        #静态方法,如果方法无需使用对象中封装的值,那么就可以使用静态方法
        @staticmethod
        def display(a1,a2):
            return a1+a2
    Foo.display(1,4)
    View Code

          3.类方法

    class Foo(object):
        #类方法,cls是类
        @classmethod
        def show(cls,x1,x2):
            print(cls,x1,x2)
    #执行类方法
    Foo.show("a","b")
    #<class '__main__.Foo'> a b
    View Code

        属性:(通过方法改造出来)

    class Foo(object):
        def __init__(self):
            pass
        @property
        def start(self):
            return 1
        @property
        def end(self):
            return 10
    obj = Foo()
    print(obj.start)
    print(obj.end)

          总结:

            编写时:方法上方写@property

                方法参数只有一个self

            调用时:无需加括号 对象方法

            应用场景:对于简单的方法,当无需传参且有返回值时

  • 相关阅读:
    一次安装。net core的经历
    c# task 等待所有子线程执行完的写法
    .net 中的async,await理解
    dbeaver pgsql连接工具
    oracle 导出表结构和备注
    abp
    发布站点
    excel 拆分多个excel并保持
    重定向和反向代理的区别
    es6中的解构赋值
  • 原文地址:https://www.cnblogs.com/qq849784670/p/9549121.html
Copyright © 2011-2022 走看看