zoukankan      html  css  js  c++  java
  • Python 面向对象

    Demo

    class NameClass:
        __slots__ = ('arg1', 'arg2')
    
        def __init__(self,arg1,arg2):
            self.arg1 = arg1
            self.arg2 = arg2
    
        def __repr__(self):
            return f'{self.arg1} {self.arg2}'
    
        @staticmethod
        def for_class_not_object(arg3,arg4):
            return arg3+arg4
    
        @classmethod
        def class_method_ex(cls):
            return cls.for_class_not_object(1,2)
    
        @property
        def _arg1(self):
            return self.arg1
        @_arg1.setter
        def _arg1(self,x):
            self.arg1 = x
        
    

    限制类属性

    为了达到限制的目的,Python允许在定义class的时候,定义一个特殊的__slots__变量,来限制该class能添加的属性。使用tuple定义允许绑定的属性名称。

    class NameClass:
        __slots__ = ('arg1', 'arg2')
    
        def __init__(self,arg1,arg2):
            self.arg1 = arg1
            self.arg2 = arg2
    
        
    

    初始化方法

    在创建对象的时候,通过自动执行__init__方法,完成对内存的初始化操作,也就是把数据放到内存空间中。

    打印对象

    打印对象的时候不希望看到对象的地址而是看到我们自定义的信息,可以通过在类中放置__repr__魔术方法来做到,该方法返回的字符串就是用print函数打印对象的时候会显示的内容。

    静态方法

    @staticmethod 创建方法是属于类而并不属于对象,就可以在实例化前调用。

    class NameClass:
        __slots__ = ('arg1', 'arg2')
    
        def __init__(self,arg1,arg2):
            self.arg1 = arg1
            self.arg2 = arg2
    
        def __repr__(self):
            return f'{self.arg1} {self.arg2}'
    
        @staticmethod
        def for_class_not_object(arg3,arg4):
            return arg3+arg4
    
        @classmethod
        def class_method_ex(cls):
            return cls.for_class_not_object(1,2)
        
    

    类方法

    @classmethod 和静态方法比较类似,Python还可以在类中定义类方法,类方法的第一个参数约定名为cls,它代表的是当前类相关的信息的对象,通过这个参数可以获取和类相关的信息并且可以创建出类的对象。

    @property装饰器

    如果想访问类的属性可以通过属性的getter(访问器)和setter(修改器)方法进行对应的操作。

    分别使用@property @_arg1.setter 定义方法_arg1

    class NameClass:
        __slots__ = ('arg1', 'arg2')
    
        def __init__(self,arg1,arg2):
            self.arg1 = arg1
            self.arg2 = arg2
    
        @property
        def _arg1(self):
            return self.arg1
        @_arg1.setter
        def _arg1(self,x):
            self.arg1 = x
    
    a  = NameClass(1,2)
    a.arg1 = 3
    print(a.arg1)
    # 3
    
  • 相关阅读:
    Rewrite the master page form action attribute in asp.net 2.0
    Using Output Cache
    An invalid character was found in text content!
    Microsoft Football Scoreboard
    A typical ASP.NET 2.0 Configuration Settings
    Visual Studio 2005 Web Application Projects Released!
    Test Driven Development with Visual Studio 2005 Team System
    How to pass a parameter to HyperLink in GridView/DataList
    MS的一个BUG折腾我几个小时!
    Create builtin tables in your own database to handle exceptions, Part 2
  • 原文地址:https://www.cnblogs.com/linzhenyu/p/13205372.html
Copyright © 2011-2022 走看看