Python面向对象学习小结之一 类与对象

在python中,用变量表示特征,用函数表示技能,因而具有相同特征和技能的一类事物就是‘类’,对象是则是这一类事物中具体的一个。

类的声明:

def functionName(args):
'函数文档字符串'
函数体
'''
class 类名:
'类的文档字符串'
类体
'''

#我们创建一个类
class Data:
  pass

class Person: #定义一个人类
  role = 'person' #人的角色属性都是人
  def walk(self): #人都可以走路,也就是有一个走路方法,也叫动态属性
    print("person is walking...")

类的作用: 属性引用与实例化

1. 属性引用(类名.属性)

class Person: #定义一个人类
  role = 'person' #人的角色属性都是人
  def walk(self): #人都可以走路,也就是有一个走路方法
    print("person is walking...")


print(Person.role) #查看人的role属性
print(Person.walk) #引用人的走路方法,注意,这里不是在调用

2. 实例化:类名加括号就是实例化,会自动触发__init__函数的运行,可以用它来为每个实例定制自己的特征

实例化的过程就是类——>对象的过程

原本我们只有一个Person类,在这个过程中,产生了一个egg对象,有自己具体的名字、攻击力和生命值。

语法:对象名 = 类名(参数)

 egg = Person('egon') #类名()就等于在执行Person.__init__()

#执行完__init__()就会返回一个对象。这个对象类似一个字典,存着属于这个人本身的一些属性和方法。

3. 查看对象与调用的方法

print(egg.name) #查看属性直接 对象名.属性名

print(egg.walk()) #调用方法,对象名.方法名()

4. 补充知识:

self:在实例化时自动将对象/实例本身传给__init__的第一个参数

一:有两种方式查看 dir(类名):查出的是一个名字列表 类名.__dict__:查出的是一个字典,key为属性名,value为属性值

二:特殊的类属性 类名.__name__#

  类的名字(字符串) 类名.__doc__#

   类的文档字符串 类名.__base__#

  类的第一个父类(在讲继承时会讲) 类名.__bases__#

   类所有父类构成的元组(在讲继承时会讲) 类名.__dict__#

  类的字典属性 类名.__module__#

  类定义所在的模块 类名.__class__# 实例对应的类(仅新式类中)

对象知识小结:

1. 

class Person: # 定义一个人类

   role = 'person' # 人的角色属性都是人

   def __init__(self, name, aggressivity, life_value):

    self.name = name # 每一个角色都有自己的昵称;

    self.aggressivity = aggressivity # 每一个角色都有自己的攻击力;

    self.life_value = life_value # 每一个角色都有自己的生命值;

   def attack(self,dog): # 人可以攻击狗,这里的狗也是一个对象。

  # 人攻击狗,那么狗的生命值就会根据人的攻击力而下降

    dog.life_value -= self.aggressivity

2.

对象是关于类而实际存在的一个例子,即实例

对象/实例只有一种作用:属性引用

egg = Person('egon',10,1000)

print(egg.name)

print(egg.aggressivity)

print(egg.life_value)

3. 

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

#查看对象的属性,直接用 对象名.属性名 即可 对象名.方法名()

#调用类中的方法,直接用 对象名.方法名() 即可

猜你喜欢

转载自www.cnblogs.com/peterhuang1977/p/9272770.html
今日推荐