python面向对象中的,变量,方法与属性

1. 类的成员 

        class Foo:

            # 方法
            def __init__(self,name):
                # 实例变量/字段
                self.name = name     

            # 方法
            def func(self):
                pass 

        # obj,Foo类的对象
        # obj,Foo类的实例
        obj = Foo(‘朱奎峰‘)

        成员共分为三类:

            变量:
                - 实例变量(字段)
                    - 公有实例变量(字段)
                    - 私有实例变量(字段)
                - 类变量(静态字段)
                    - 公有类变量(静态字段)
                    - 私有类变量(静态字段)

                    实例一:
                        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 zt(self):
                                print(Base.__secret)

                        class Foo(Base):

                            def func(self):
                                print(self.__secret)
                                print(Foo.__secret)

                        obj = Foo()
                        obj.zt()

            方法:
                - 实例方法
                        class Foo(object):
                            def __init__(self, name):
                                self.name = name

                            # 实例方法
                            def func(self):
                                print(self.name)

                        obj = Foo(‘..‘)
                        obj.func()

                - 静态方法
                        class Foo(object):
                            def __init__(self, name):
                                self.name = name

                            # 静态方法,如果方法无需使用对象中封装的值,那么就可以使用静态方法
                            @staticmethod
                            def display(a1,a2):
                                return a1 + a2
                        Foo.display(1,3)

                - 类方法
                        class Foo(object):

                            # 类方法,cls是类
                            @classmethod
                            def show(cls,x1,x2):
                                print(cls,x1,x2)

                        # 执行类方法
                        Foo.show(1,8)

                面试题: 静态方法/类方法和实例方法的区别?

            属性(通过方法改造出来):
                示例:
                    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)
                    """
                        # 总结:
                        #     1. 编写时
                        #            - 方法上方写 @property
                        #            - 方法参数:只有一个self
                        #     2. 调用时:无需加括号  对象.方法
                        #     3. 应用场景: 对于简单的方法,当无需传参且有返回值时,可以使用 @property
                    """

原文地址:https://www.cnblogs.com/journey-mk5/p/9550951.html

时间: 2024-11-05 13:31:50

python面向对象中的,变量,方法与属性的相关文章

python面向对象中的__init__方法怎么理解?

我们在学习python类的时候,总会碰见书上的类中有__init__()这样一个函数,很多同学百思不得其解,其实它就是python的构造方法. 构造方法类似于类似init()这种初始化方法,来初始化新创建对象的状态,在一个对象呗创建以后会立即调用,比如像实例化一个类: f = FooBar() f.init() 使用构造方法就能让它简化成如下形式: f = FooBar() 你可能还没理解到底什么是构造方法,什么是初始化,下面我们再来举个例子: class FooBar: def __init_

Python面向对象反射,双下方法

一. 反射 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力(自省).这一概念的提出很快引发了计算机科学领域关于应用反射性的研究.它首先被程序语言的设计领域所采用,并在Lisp和面向对象方面取得了成绩. python面向对象中的反射:通过字符串的形式操作对象相关的属性.python中的一切事物都是对象(都可以使用反射) 四个可以实现自省的函数 下列方法适用于类和对象(一切皆对象,类本身也是一个对象) 对实例化对象的示例 class Foo

Python面向对象中的“私有化”

Python面向对象中的“私有化” Python并不直接支持私有方式,而要靠程序员自己把握在外部进行特性修改的时机. 为了让方法或者特性变为私有(从外部无法访问),只要在它的名字前面加上双下划线即可. 由双下划线 __ 开始的属性在运行时被“混淆”,所以直接访问是不允许的. 实际上,在 Python 带有双下划线的属性或方法并非正真意义上的私有,它们仍然可以被访问. 在类的内部定义中,所有以双下划线开始的名字都被“翻译”成前面加上单下划线和类名的形式. 示例: >>> class Tes

python面向对象中的一些特殊__方法__

1. __doc__ 表示类的描述信息 class Foo: """ 描述类信息""" def func(self): pass print Foo.__doc__ #输出:类的描述信息 2. __module__ 和  __class__  __module__ 表示当前操作的对象在那个模块 __class__     表示当前操作的对象的类是什么 #!/usr/bin/env python # -*- coding:utf-8 -*- cla

【python初级】010-构造方法,属性和迭代器

构造方法,属性和迭代器 目录: -------------构造方法 1.构造方法的基本使用 2.重写一般方法和特殊的构造方法 3.绑定的超类构造方法 4.调用为绑定的超类来构造方法 5.使用super函数 6.成员访问 7.基本的序列和映射规则 8.子类化列表,字典和字符串 -------------属性 -------------迭代器 一:构造方法 在python的心版本中,会有一些特性(比如属性和super函数)不会再老式的类上起作用,为了确保使用的类是新型的,应该把赋值语句metacla

Python函数中的变量和函数返回值

1.函数的变量 局部变量和全局变量: Python中的任何变量都有特定的作用域 在函数中定义的变量一般只能在该函数内部使用,这些只能在程序的特定部分使用的变量我们称之为局部变量 在一个文件顶部定义的变量可以供文件中的任何函数调用,这些可以为整个程序所使用的变量称为全局变量. def fun(): x=100 print x fun() x = 100 def fun(): global x   //声明 x +=1 print x fun() print x 外部变量被改: x = 100 de

Python函数中的变量和函数返回值的使用实例

1.函数的变量 局部变量和全局变量: Python中的任何变量都有特定的作用域 在函数中定义的变量一般只能在该函数内部使用,这些只能在程序的特定部分使用的变量我们称之为局部变量 在一个文件顶部定义的变量可以供文件中的任何函数调用,这些可以为整个程序所使用的变量称为全局变量. def fun(): x=100 print x fun() x = 100 def fun(): global x //声明 x +=1 print x fun() print x 外部变量被改: x = 100 def

python面向对象常用内置方法

class Person(): #构造函数 def __init__(self,name,age=None): self.name=name self.age=age self.lists=[1,3,5] self.dicts={} #打印函数,类似java中的toSring() def __str__(self): return 'Peason(%s)'%self.name #对象的字典表示 def __dict__(self): return {'name':self.name} #对象相加

Python类中的字段,方法,属性区别及StaticMethod, Property

类包含下列 静态属性 动态属性 静态方法 动态方法 class Province: #静态字段--属于类,调用方法类.字段名 memo = "中国23个省之一" #动态字段--属于对象,调用方式实例化对象.字段名 def __init__(self, name, capital, leader): self.Name = name self.Capital = capital self.Leader = leader #动态方法--属于对象 def sports_game(self):