Python学习第十五课——类的基本思想(实例化对象,类对象)

类的基本思想

类:把一类事物的相同的特征和动作整合到一起就是类
类是一个抽象的概念

对象:就是基于类而创建的一个具体的事物(具体存在的)
也是特征和动作整合到一块

对象写法

# 对象写法
def school(name, addr, type): # 对象
    def __init__(name, addr, type): # 初始化
        sch = {
            'name': name,
            'addr': addr,
            'type': type,
            'kaoshi': kao_shi,
            'zhaosheng': zhao_sheng,
        }
        return sch

    def kao_shi(school):
        print('%s 学生正在考试' % school['name'])

    def zhao_sheng(school):
        print('%s %s 正在招生' % (school['type'], school['name']))

    return __init__(name, addr, type)


s1 = school('Hs', 'henan', '私立学校')
print(s1['name'])
s1['zhaosheng'](s1)
# 类的相关属性

class Chinese:  #
    tuanyuan='团员'  # 属性

    def sui_di_tu_tan(): # 函数
        print('随地吐痰')

print(Chinese.tuanyuan) # 团员
Chinese.sui_di_tu_tan() # 随地吐痰

# print(dir(Chinese))
# print(Chinese.__dict__) # 查看属性字典

print(Chinese.__dict__['tuanyuan']) # 团员
Chinese.__dict__['sui_di_tu_tan']() # 随地吐痰

类的写法

# 类写法
class School(object):
    def __init__(self,name, addr, type):
        self.name=name
        self.addr=addr
        self.type=type

    def kao_shi(self):
        print('%s 学生正在考试' %(self.name))

    def zhao_sheng(self):
        print('%s %s 正在招生' % (self.type, self.name))

s1 = School('Hs', 'henan', '私立学校') # 此时直接运行了__init__()函数
s2 = School('清华', '北京', '公立学校')
print(s1.__dict__)

s1.zhao_sheng()
s2.zhao_sheng()
s1.kao_shi()
s2.kao_shi()
class Chinese:  #
    tuanyuan='团员'  # 属性
    def __init__(self,name,age,sex):
        self.mingzi=name
        self.nianling=age
        self.xingbie=sex


    def sui_di_tu_tan(self): # 函数
        print('%s 随地吐痰' %(self.mingzi))

    def cha_dui(self):  # 函数
        print('%s 插队' % (self.mingzi))

c1=Chinese('meimei',24,'female')
c2=Chinese('haohao',24,'male')

print(c1.__dict__)
print(c2.__dict__)

c1.sui_di_tu_tan()
c2.cha_dui()

 

 类的增删查改

# 类的增删改查

class Chinese:
    country = 'China'

    def __init__(self, name):
        self.name = name

    def play_baskctball(self, ball):
        print('%s 正在打 %s ' % (self.name))


# 查看
print(Chinese.country)  # China

# 修改

Chinese.country = 'huayi'
print(Chinese.country)  # huayi
p1=Chinese('hanhan')
print(p1.__dict__)
print(p1.country)

#增加

Chinese.tuanyuan='团员'
print(Chinese.tuanyuan) # 团员

# 删除

del Chinese.tuanyuan
del Chinese.country

print(Chinese.__dict__)
print(Chinese.country)

# 增加函数

def eat_food(self,food):

    self.food=food
    print('吃%s'%(self.food))
Chinese.eat=eat_food
print(Chinese.__dict__)

p1.eat('苹果')  # 吃苹果

 

实例属性的增删改查

# 实例属性的增删改查

class Chinese:
    country = 'China'

    def __init__(self, name):
        self.name = name

    def play_baskctball(self, ball):
        print('%s 正在打 %s ' % (self.name, ball))


c1 = Chinese('hanhan')
print(c1.__dict__)

# 查看
print(c1.name)  # hanhan

print(c1.play_baskctball)

# 增加

c1.age = 18
print(c1.__dict__)  # {'name': 'hanhan', 'age': 18}
print(c1.age)  # 18


def test(self):
    print('我是来自实例的函数属性')


c1.test = test
print(c1.__dict__)
c1.test(c1)  # 我是来自实例的函数属性

# 修改

c1.age=19
print(c1.__dict__)

print(c1.age) # 19

# 删除
del c1.age
print(c1.__dict__) #{'name': 'hanhan', 'test': <function test at 0x030ABC00>}

 实例属性和类属性混合使用

class Chinese:
    country = 'China'

    def __init__(self, name):
        self.name = name

    def play_baskctball(self, ball):
        print('%s 正在打 %s ' % (self.name, ball))

c1 = Chinese('hanhan')
print(c1.country) # China

c1.country='中国'
print('类的---->',Chinese.country) # 类的----> China
print('实例的--->',c1.country) # 实例的---> 中国

插曲:

country='China'
class Chinese:
    def __init__(self, name): # 只要一实例化对象 立刻执行该方法
        self.name = name
        print('--->',country) # ---> China
    def play_baskctball(self, ball):
        print('%s 正在打 %s ' % (self.name, ball))


c1 = Chinese('hanhan') #---> China  此时 可以找到类以外的变量

# print(c1.country) # 报错

插曲2:

country='China'
class Chinese:
    country='中国'
    def __init__(self, name): # 只要一实例化对象 立刻执行该方法
        self.name = name
        print('--->',country) # ---> China
    def play_baskctball(self, ball):
        print('%s 正在打 %s ' % (self.name, ball))


c1 = Chinese('hanhan') # 此时 还是 ---> China 而不是中国
print(c1.country) # 此时才为中国
原文地址:https://www.cnblogs.com/pyhan/p/12290632.html