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
    
  • 相关阅读:
    scan design rules
    scan cell
    DFT basics
    测试性分析
    DFT设计绪论
    clock gate cell
    Linux命令
    Multi-voltage和power gating的实现
    Power Gating的设计(架构)
    Power Gating的设计(模块二)
  • 原文地址:https://www.cnblogs.com/linzhenyu/p/13205372.html
Copyright © 2011-2022 走看看