• 5_Python OOP


    1. 实例属性和类属性

           (1) 实例属性在构造函数__init__中定义,定义时以self作为前缀,只能通过实例名访问

           (2) 类属性在类中方法之外单独定义,还可以在程序中通过类名增加,建议通过类名直接访问。

    class Product:							##建议首字母大写
    	price = 100							##类属性
    	def __init__(self,c):
    		self.color = c					##实例属性
    
    ##主程序
    Product1 = Product("red")
    Product2 = Product("yellow")
    
    Product.price = 120						##修改类属性值
    Product.name = "shoes"					##增加类属性
    
    Product1.color = "black"				##修改实例属性
    

           (3) 私有属性以__开头,否则是公有属性。私有属性在类外不能直接访问。而是通过特殊方式访问私有属性:

    class Food:
        def __init__(self):
            self.__color = 'red'			##私有属性定义格式
            self.price = 0
    
    ##主程序
    >>>apple = Food()
    >>>apple.(_)Food__color = "blue"		##私有属性修改格式
    >>>print(apple._Food__color)			##私有属性访问格式
    
    blue
    


    2. 类的方法

    class Fruit:
        price = 0							##类属性
        
        def __init__(self):					
            self.__color = 'red'			##私有属性
        
        def __outputColor(self):			##私有方法
            print(self.__color)
            
        def output(self):					##公有方法
            self.__outputColor()
            
        @staticmethod						##静态方法
    	def getprice():						
        	return Fruit.frice
        
        @classmethod						##类方法
        def fget(cls):
            print(cls)
    
    


    3. 构造函数和析构函数

    def __init__(self,first = '',last = '',id = 0):
    	self.firstname = first
    	self.lastname = last
    	self.idint = id
    
    def __del__(self):
    	print("self was dead")
    


    4. 常用的运算符重载

    方法 重载 调用
    __add__ + x+y
    __or__ | x|y
    __repr__ 打印 repr(x)
    __str__ 转换 str(x)
    __call__ 函数调用 x(*args,**key)
    __getattr__ 点号运算 x.undefine
    __setattr__ 属性赋值 x.any=value
    __delattr__ 属性删除 del x.any
    __getattribute__ 属性获取 x.any
    __getitem__ [] x[key]
    __setitem__ 索引赋值 x[key]=value
    __delitem__ 索引删除 del x[key]
    __len__ 长度 len(x)
    __bool__ 布尔测试 bool(x)
    __lt__,__gt__ 小于,大于
    __le__,__ge__ 小于等于,大于等于
    __eq__,__ne__ 等于,不等于
    __contain__ in item in x
    __iter__,__next__ 迭代 I=iter(x),next(x)


    5. 继承

            与C++继承实现类似

    class sub(super):
    	def __init__(self):
    
    
  • 相关阅读:
    Python_抽象类和接口类
    VS打包项目
    SqlServer 逗号分隔字段查找对应字段值,结果用逗号隔开
    二十一、位置和尺寸
    十三、TableLayout 表格布局
    十一、RelativeLayout 布局
    二十、动画属性动画
    十六、ListView
    十五、ConstraintLayout 限制布局
    十九、动画补间动画
  • 原文地址:https://www.cnblogs.com/machine-lyc/p/10636582.html
Copyright © 2020-2023  润新知