- 定义类
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)