【面向对象2】------- PYTHON基础8

77 阅读2分钟

3. 类对象的创建使用及修改

==创建类对象的过程,又称为类的实例化 ,== 类对象的创建 : 变量名 = 类名(参数) 定义类时,如果没有添加 init() 构造方法,又或者添加的 init() 中仅有一个 self 参数, 则创建类对象时的参数可以省略不写。

class Person: #定义一个人类
    '''
    这是一个Person类的定义
    '''
# __init__函数,实例化时为每个实例定制自己的属性
    def __init__(self, name, age, weight):
        self.name = name
        self.age = age
        self.weight = weight

Someone_1 = Person(name='小强', age=1, weight=18)  #类对象的创建 : 变量名 = 类名(参数)
print(Someone_1.name, Someone_1.age, Someone_1.weight)

Someone_2 = Person(name='小杰', age=2, weight=20)
print(Someone_2.name, Someone_2.age, Someone_2.weight)

输出

小强 1  18
小杰 2  20

4. 类对象的使用

类对象名.变量名 #使用英文句点 “.” 来访问对象中的属性(变量) 类对象名.方法名(参数) #使用英文句点 “.” 来访问对象中的方法(函数)

class Person:  # 定义一个人类
    '''
    这是一个Person类的定义
    '''
    def __init__(self, name, age, weight):
        self.name = name
        self.age = age
        self.weight = weight

    def think(self, a, b):
        print(a, ' + ', b, ' = ', a + b)

    def Information(self):
        print("%s今年%d岁,体重%d公斤" % (self.name, self.age, self.weight))

#类对象的使用:调用属性和方法
Someone = Person('小杰', 18, 60)  # 创建对象#类对象的创建 : 变量名 = 类名(参数)
print(Someone.name)  # 访问类对象的属性,类对象名.变量名
Someone.think(10, 100)  # 访问类对象的方法,类对象名.方法名(参数) 
Someone.Information()  # 访问类对象的方法,由于只有一个self参数,所以不需要传入参数

#类对象的修改:直接赋值
Someone.name = '大杰'
Someone.age = 28
Someone.weight = 80
Someone.Information()  #修改后的信息

输出

小杰
10  +  100  =  110
小杰今年18岁,体重60公斤
大杰今年28岁,体重80公斤

==注意,Python支持添加新的实例变量或者删除已有的实例变量,也支持给类对象动态添加方法。但是这样就会打乱实例的结构,尽量不用。==

5. self使用详解

  • 类中的实例属性和实例方法的第一个参数必须是self def init(==self,== name, age, weight):
  • self表征的是当前实例,这样类就能区分当前的实例的内容

self 参数的具体作用是==同一个类可以产生多个对象。== class Person: #定义一个人类

    def __init__(self, name): # __init__函数,实例化时为每个实例定制自己的属性
        self.name = name # 实例属性,表示定义的实例有自己的name

    def myself(self): 
#myself() 中的 self 代表该方法的调用者,即谁调用该方法,那么 self 就代表谁。
        print("this is my self:", self)

Someone_1 = Person(name="小杰")
print("小杰: ", Someone_1)
Someone_1.myself()

print()

Someone_2 = Person(name="大杰")
print("大杰: ", Someone_2)
Someone_2.myself()

输出

小杰:  <__main__.Person object at 0x7f5c592184f0>
this is my self: <__main__.Person object at 0x7f5c592184f0>

大杰:  <__main__.Person object at 0x7f5c5924e970>
this is my self: <__main__.Person object at 0x7f5c5924e970>