python 类

  • 定义类
class 类名:
    def 函数名(self):   #哪个对象调用这个方法,self就是哪个对象
        语句
    def 函数名(self):   #类中定义函数,第一个参数要是self
        语句

变量=类名()   #创建类
  • 类的内置方法
class cat():
    def __new__(self):  #在init执行之前的方法,构造方法
        pass
    def __init__(self,newname,newage):  #初始化该类时调用此方法,定义变量,
        self.name=newname
        self.age=newage
    def __del__(self):    #实例被清除时调用此方法,析构方法
        pass
    def __str__(self):    #print实例时调用此方法
        pass
    def __call__(self):  #实例=类名()  -> 实例()  这时候调用的方法
        pass
    def __len__(self):  #len(实例),这个时候调用的方法
        pass
    def __hash__():   #返回对象的hash,hash()方法调用
        pass
    def __eq__():   #==时候调用,在set集合去重时会被调用,先判断hash,在判断eq
        pass
  • 私有属性
class cat:
    __key=value       #私有属性
    def __方法(self):  #私有方法
        pass
  • 继承
#单继承
class 子类(父类名):
    def 方法名(self):    #子类方法
        pass
    def 父类方法名(self):   #重写父类方法
        重写父类方法
        super().父类方法()   #调用父类方法,这样不会覆盖父类方法

#多继承,调用方法查找顺序子类->父类1->父类2
class 子类(父类1,父类2)
    pass
  • main
mymodule.py作为一个模块,我们希望保留末尾测试代码,即上面调用函数和类,但也不希望再导入模块的时候执行。该怎么办呢?
可以利用Python文件的一个内置属性__name__实现,如果直接运行Python文件,__name__的值是"__mian__",如果import一个模块,那么模块的__name__的值是"文件名"。

# vi mymodule.py
name = "aliang“
def count(a, b):
  result = a * b
  return f"{a}与{b}的乘积是: {result}“
if __name__ == "__main__":
  print("我在手动执行这个程序")
  print(count(6,6))
  print(name)

  

初学linux,每学到一点东西就写一点,如有不对的地方,恳请包涵!
原文地址:https://www.cnblogs.com/forlive/p/12611027.html