• 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
                        """
  • 相关阅读:
    css(上)
    前端基础
    并发编程,python的进程,与线程
    网络编程 套接字socket TCP UDP
    python 类的内置函数2
    python3大特征之多态
    python 类(object)的内置函数
    类 与 继承
    类 与 面向对象
    OOP >>> 封装
  • 原文地址:https://www.cnblogs.com/journey-mk5/p/9550951.html
Copyright © 2020-2023  润新知