面向对象
类:具有相同属性和方法的一类事物
对象(实例):具体的某一个人事物
实例化:对象=类的过程
类的定义:class关键字 ,类名首字母大写
类中的属性:
动态属性:方法
静态属性:类属性
总结:
通过init方法初始化来的
在一个类的外面去使用一个对象,这个对象叫什么,你就用这个对象的名字去调它内部的方法和属性
而在一个类的内部去使用一个对象,self就是这个对象本身,使用self去调用它的属性
静态属性(类属性):所有的对象共有的属性,可以直接被类调用
对象属性: 是只属于某一个对象的,必须在实例化之后用对象调用
动态属性:调用方法,方法
调用方法:
对象点方法名
不必传的参数:self
当类实例化的时候:自动的触发__init__方法。实例化的时候类名(参数),这个参数传给init方法
class 类名: def __init__(self,参数1,参数2): self.对象的属性1 = 参数1 self.对象的属性2 = 参数2 def 方法名(self):pass def 方法名2(self):pass 对象名 = 类名(1,2) #对象就是实例,代表一个具体的东西 #类名() : 类名+括号就是实例化一个类,相当于调用了__init__方法 #括号里传参数,参数不需要传self,其他与init中的形参一一对应 #结果返回一个对象 对象名.对象的属性1 #查看对象的属性,直接用 对象名.属性名 即可 对象名.方法名() #调用类中的方法,直接用 对象名.方法名() 即可
#对于类的静态属性:
#如果类.属性 调用的就是类中的属性
#对象.属性 先从自己的内存空间里找名字 找到了用自己的 ,没找到用类的,如果类中也没有 就报错
#关于类的动态属性(方法):
#这个方法本身就存在类中,并不会存在对象的内存中
#但是在对象调用类中的方法的时候 要依赖于一个地址簿去类中寻找对应的方法
#关于对象的属性:
#对象的属性就存在对象的命名空间中
#只能被对象调用、修改
#不能被类调用
#例1
class A:
country = '印度'
def show_name(self):
print(self.name)
a = A() #实例化对象
a.name = 'alex' #给对象创建一个name属性
a.show_name() #调用了showname方法
例2
class A:
country = '印度'
def show_name(self):
print(self.name)
a = A() #a对象
b = A() #b对象
print(A.country)
print(a.country) #先找a对象的内存 再找A的内存
print(b.country)
a.country = '中国' #给a对象创建了一个属性
print(A.country) #印度
print(a.country) #中国
print(b.country) #印度