面向对象基本格式:
# 定义一个类:Account class Account: # 类中的方法 def login(self): print('登录') def logout(self,name): print('注销',name) return 123 # 调用类中的方法 # 1.创建对象 x = Account() #创建一个Acount类的对象 # 2.使用对象调用类中的方法 x.login() y = x.logout('wdc')#可以传递参数和接收返回值 print(y)
应用场景:遇到很多函数,需要给函数进行归类和划分。【封装】
对象的作用:
存储一些值,以后方便自己使用。
class Person: def show(self): print(self.name) p1 = Person() p1.name = 'wdc' p1.show() p2 = Person() p2.name = 'yhf' p2.show()
类的初始化方法:
将数据封装到对象,方便我们使用。
class Person: def __init__(self,name,age,gender):# 初始化方法:给对象内部数据初始化。
#将传进来的参数赋值给对象中的变量。和实例绑定。 self.name = name self.age = age self.gender = gender def show(self): temp = '姓名:{},年龄:{},性别:{}'.format(self.name,self.age,self.gender) print(temp) # 类()实例化对象,自动执行此类中的 __init__方法。 p1 = Person('王佃超','22','男') p1.show() p2 = Person('尹洪飞','23','女') p2.show()
继承:
# 父类 class Base: def f1(self): pass # 子类 class Foo(Base): def f2(self): pass # 创建一个子类对象 obj1 = Foo() # 执行对象.方法时,优先在自己的类中找,如果没有就去父类中找。 obj1.f2() #执行自己的方法 obj1.f1() #执行父类中的方法 # 创建一个父类对象 obj2 = Base() # 只能执行自己的类中的方法,不能执行子类中的方法。 obj2.f1()
问题:什么时候才能用到继承?
多个类中如果有公共的方法,可以放到父类中避免重复编写。
静态方法和类方法(特殊的静态方法)
class Dog: # 静态方法 @staticmethod def f1(name,age): print('...') print(name,age) # 类方法,至少有一个参数cls。 @classmethod def f2(cls): print(cls) # 静态方法是由类来调用执行 Dog.f1('wdc',123) # 类方法不用传递参数,自动将类名传递进去 Dog.f2()
静态方法就等于python中的函数。