首页 > temp > python入门教程 >
-
学习python第七天
上一章的类是用函数模拟了一下,方便与理解。
类:类名用驼峰式写法,不用下划线
class Dog:
name = "jinmao" #类属性。 此处属于共有属性。公有属性一旦更改所有的实例中全都会更改。所以根据需要可以设置实例属性
def __init__(self, name, age): #初始化方法,也叫构造方法,构造函数。作用是实例化的时候自动执行,进行一些初始化工作。把需要的实例属性当作参数传入。(name和age)
print(name, age)
#经过了初始化方法,但是也没有把参数真正传到实例中。还需要绑定参数值到实例中。
self.name = name 绑定参数值
self.age = age
def bite(self): #类中的函数叫方法,方法中必须有至少一个参数(self)。self代表实例本身。 调用方法 实例.方法
print("you were bited! ") #被动语态应该没用错吧,好久都不学英语了hhh
print(self.name,self.age) #由于__init__和bite是两个函数参数不能通用,但是可以通过self将连个函数建立联系。此处n多个方法都可以通过self进行共享,实现联系
d1 = Dog() #实例化,d1为实例(对象)
d1.bite() #调用方法
d2 = Dog("Jack", 12) #传入实例属性
print(d2.name) #将实例属性绑定之后,此处才能输出传入的参数。也代表了真正把实例属性传入到了类中
Dog.name = "zangao" #更改类中的共有属性。实例属性更改方法一样。没有这个属性就是添加
类的属性是公有属性,实例的属性是实例属性
注意:类,和实例的内存空间是独立的。类中的属性是共有的,实例中的实例属性是独立的。也就是说实例既包含自己的实例属性,又拥有类的公有属性
类的方法,必须带一个self参数,这样才能打通函数之间的联系。也才能让函数知道是谁在调用这个函数
self代表实例本身。哪个实例调用函数或者传入实例属性那么谁就是self。 这玩意再JavaScript中叫this。当时稀里糊涂的没想到在python中学明白了hhh
实例属性也可在外部添加。d1.sex = "male" 这相当于初始化方法穿了一个sex参数,之后再绑定。
对象之间的交互
参数除了self,也可以传入一个对象(另一个实例) 比如:bite(self,person) 此处的person可以是其他类生成的一个实例。可在这个bite函数中控制person的属性。此为对象的简单的交互。
比如 def bite(self,person):
person.live -= dog.attack 人的生命值(属性) 等于 人本来的生命值减去狗的攻击力
对象之间的关系:依赖关系,关联关系,组合关系,聚合关系,继承关系
依赖关系:将一个对象当作参数传递给另一个对象
class Dog:
def __init__(self, name, master):
self.name = name
self .master = master
dog1 = Dog("zangao", p1) #此处的p1为类person生成的对象。此处就可以通过dog1来调用p1
关联关系:两个对象之间的才能做的事。例如男女朋友ppp
class person:
def __init__ (self, name, sex):
self.name = name
self.sex = sex
self.partner = None #这句话我不写程序也没有报错。原因不太清楚,有大神看到可以解释一下
p1 = person("jack","M")
p2 = person("Ann","F")
p1.partner = p2 #二者要相互关联
p2.partner = p1 #二者要相互关联
print(p1.partner.name)
p1.partner = None #取消关联二者要相互取消
p2.partner = None #取消关联二者要相互取消
来源:https://www.cnblogs.com/xiaoyuheng/p/14612470.html