类和对象
今天想和大家聊聊面向对象中的类和对象,其实一开始我学的云里雾里,借鉴了一个我以前看到过的解释,希望可以用大家容易理解的方式来说道说道。
生活中每一个具体的东西都可以被认为是对象,例如华为p40、小米10、苹果11、oppo等手机,你可以认为这些物体是“对象”,虽然他们各不相同、各有特色,但是都可以归结为“手机类”,因为具有相同的属性,例如都有摄像头、电池、显示屏等。也有共同的功能方法,例如都可以打电话、发短信、刷微博等。
类就是把有相同(属性)和(方法)的“对象”归结在一起。
以上这几个具体的手机都是“手机类”实例化出来的“对象”
举例:
精华——雅诗兰黛小棕瓶
编程语言——Python
车——奔驰
单身狗——你我他
类的定义与调用
#英雄类
class Hero:
#构造函数给实例变量赋值,定义两个形参
def __init__(self,chinesename,slogan):
#参数传给实例变量
#chinesename,slogan是所有英雄都会包含的属性
#实例变量(成员变量)
self.chinesname=chinesename
self.slogan=slogan
#定义一个函数实例对此描述(实例方法)
def falsh(self):
print(self.chinesname+":我闪了过去")
yasuo=Hero("亚索","Death is like wind")
yasuo.flash()
print(yasuo.slogan)
print(yasuo.__dict__)
类(class) 形参self
在类的方法中(如__init__),第一参数永远是self,表示创建的类实例本身,而不是类本身。
self代表当前对象的地址。self能避免非限定调用造成的全局变量。
self不是python的关键字,也可以用其他名称命名,但是为了规范和便于读者理解,推荐使用self。
类变量,实例变量,局部变量
1、全局变量:在模块内、在所有函数外面、在class外面。
2、局部变量:在函数内、在class的方法内(未加self修饰的)。
3、 静态变量:在class内的,但不在class的方法内的。
4、 实例变量:在class的方法内的,用self修饰的变量。
例子
class BankAccount:
#Constructor构造器
def __init__(self,accountNumber,accountName,balance):
self.accountNumber=accountNumber
self.accountName=accountName
self.balance=balance
#存钱
def deposit(self,amount):
self.balance=self.balance+amount
#取钱
def withdraw(self,amount):
self.balance=self.balance-amount
def __str__(self):
return "({},{})".format(self.accountNumber,self.balance)
b1=BankAccount("98","Tom",520)
b2=BankAccount("19","Jerry",999)
#Tom取100元钱
b1.withdraw(100)
#Jerry存159元
b2.deposit(150)
print(b1.balance)
print(b2.balance)
print(b1.balance<b2.balance)