面向对像(1day)

Posted wanchenxi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对像(1day)相关的知识,希望对你有一定的参考价值。

 

 

 

# list
# int
# tuple


#在python3中,所有的类都是新式类
#
# class A:pass
# print(A.__bases__)
#python3中你不写都默认给你是继承object
#
#
#
# #在python2中,新式类
# class B(object):pass
B继承object
# class C(B):pass
C继承B
#
# print(B.__bases__)
# print(C.__bases__)
#
#
#
# #在python2中,经典类
# class D:pass
# print(D.__bases__)


# class Student:
#     country = \'China\'
#
#     def __init__(self, ID, NAME, SEX, PROVINCE):#__init__这函数下面不能有除了none以外的返回值
#         self.id = ID
#         self.name = NAME
#         self.sex = SEX
#         self.province = PROVINCE
#
#     def search_score(self):
#         print(\'tell score\')
#
#     def study(self): #self=s1
#         print(\'study\',self)
#类的属性是:特征(变量)和技能(函数)

#类的用法:实例化,属性引用
# s1 = Student(\'371818181818181\', \'cobila\', \'female\', \'shanxi\')
    #Student.__init__(s1,\'371818181818181\',\'cobila\',\'female\',\'shanxi\')就等于上面的一行,但是这个函数不能有return
    # s1.id=\'371818181818181\'
    # s1.name=\'cobila\'
    # s1.sex=\'female\'
    # s1.province=\'shanxi\'

# print(Student.country)这是引用类的变量
# print(Student.__init__)
# print(Student.study) 这些都是函数加括号就能运行
# print(Student.search_score) 都是函数

# Student.__init__(s1,\'371818181818181\',\'cobila\',\'female\',\'shanxi\')因为是函数,所以加括号就运行
# Student.study(s1)

# Student.x=1   给类增加一个属性
# print(Student.x)
# x=10000000
# print(Student.x)还是1,涉及到名字,跟命名空间有关,类相当于把一堆名字,包起来了
你要用,就必须类名.xx的方法来进行

# del Student.x    删除类的那个属性
# print(Student.x)
#
# print(Student.study)
# del Student.study 删除类的属性
# print(Student.study)接下来就会报错

# Student.country=\'xxxxx\' 改变类的属性
# print(Student.country)


# class Struct:pass
# Struct.x=1
# Struct.y=2
# Struct.res=Struct.x+Struct.y
# print(Struct.res)
这嘛做的好处是,变量来自于类,跟外部的名字隔离,


# class Student:
#     country = \'China\'
#
#     def __init__(self, ID, NAME, SEX, PROVINCE):
#         self.id = ID
#         self.name = NAME
#         self.sex = SEX
#         self.province = PROVINCE
#
#     def search_score(self):
#         print(\'tell score\')
#
#     def study(self): #self=s1
#         print(\'study\',self)
#
# s1 = Student(\'371818181818181\', \'cobila\', \'female\', \'shanxi\')

#对象也称为实例
#对象的属性:对象本身就只有特征(变量)

#对的用法:属性引用
# print(s1.id,s1.name,s1.sex,s1.province)
# s1.weight=100
#
# weight=1111111111111111111111111111111111111111111111
# print(s1.weight)
# # del s1.weight
# # print(s1.weight)
#
# s1.id=123   修改
# print(s1.id)



#类的名称空间与对象的名称空间
# x=123123123123
# class Student:
#     country = \'China\'
#
#     def __init__(self, ID, NAME, SEX, PROVINCE):
#         self.id = ID
#         self.name = NAME
#         self.sex = SEX
#         self.province = PROVINCE
#
#
#     def search_score(self):
#         print(\'tell score\')
#
#     def study(self): #self=s1
#         print(\'study\',self)
#     def walk(self):
#         print(\'name:%s is walking\' %self.name)
#
# s1 = Student(\'371818181818181\', \'cobila\', \'female\', \'shanxi\')
# s2 = Student(\'371818181sadf818181\', \'cobilamei\', \'femaleasfd\', \'shasdfanxi\')
#
#
# # print(Student.__dict__) #查看类的名称空间,是一个字典
# # print(Student.country) 就是在类里面有没有一个country对应的value
# # print(s1.__dict__)#查看对象的名称空间,是一个字字典
# # print(s1.id)
# # s1.country="123123123"
# # print(id(s1.country))
# # print(id(s2.country))
# # print(id(Student.country))
# #
# print(s1.study,id(s1.study))
# print(Student.study,id(Student.study))
# #绑定方法的核心在于‘绑定’,唯一绑定一个确定的对象
# s1.walk()
# s2.walk()



class Riven:
    camp=\'Noxus\'  #所有玩家的英雄(锐雯)的阵营都是Noxus;
    def __init__(self,nickname,aggressivity=54,life_value=414): #英雄的初始攻击力54;
        self.nickname=nickname  #为自己的锐雯起个别名;
        self.aggressivity=aggressivity #英雄都有自己的攻击力;
        self.life_value=life_value #英雄都有自己的生命值;
    def attack(self,enemy):   #普通攻击技能,enemy是敌人;
        enemy.life_value-=self.aggressivity #根据自己的攻击力,攻击敌人就减掉敌人的生命值。

class Garen:
    camp=\'Noxus\'  #所有玩家的英雄(锐雯)的阵营都是Noxus;
    def __init__(self,nickname,aggressivity=54,life_value=414): #英雄的初始攻击力54;
        self.nickname=nickname  #为自己的锐雯起个别名;
        self.aggressivity=aggressivity #英雄都有自己的攻击力;
        self.life_value=life_value #英雄都有自己的生命值;
    def attack(self,enemy):   #普通攻击技能,enemy是敌人;
        enemy.life_value-=self.aggressivity #根据自己的攻击力,攻击敌人就减掉敌人的生命值。


#对象之间的交互
# r1=Riven(\'芮雯雯\')
# g1=Garen(\'草丛轮\')
# print(r1.life_value)
# g1.attack(r1)
# print(r1.life_value)


# name=input(\'your nickname: \')
# r1=Riven(name)

 

 

面向对像程序考虑的时候
#应用场景想清楚
#找不到共同特征和技能不用强求



#对象:学校----->归类
    #共有的特征:商标为etiantian
    #共有的技能:招生
    #独有的特征:地址不一样,老师们,课程

class School:
    tag=\'etiantian\'
    def __init__(self,addr):
        self.addr=addr
        self.teacher_list=[]
        self.course_list=[]

    def zhaosheng(self):
        pass


#对象:老师---->归类
    #共同的技能:教课
    #独有的特征:名字,性别,level,课程

class Teacher:

    def __init__(self,name,sex,level):
        self.name=name
        self.sex=sex
        self.level=level
        self.course_list=[]

    def teach(self):
        pass


#对象:学生---->归类
    #共同的特征:
    #共同的技能:search_score,handin
    #独有的特征:学号,名字,性别,课程
class Student:
    def __init__(self,ID,name,sex):
        self.id=ID
        self.name=name
        self.sex=sex
        self.course_list=[]
    def search_score(self):
        pass

    def handin(self):
        pass

class Course:
    def __init__(self,name,price,period):
        self.name=name
        self.price=price
        self.period=period

s1=Student(\'123123123123\',\'cobila\',\'female\')
# print(s1.id,s1.name,s1.sex)
# print(s1.course_list)
# s1.course_list.append(\'python\')
# s1.course_list.append(\'linux\')
# print(s1.course_list)

python_obj=Course(\'python\',15800,\'7m\')
linux_obj=Course(\'linux\',19800,\'2m\')


s1.course_list.append(python_obj)
s1.course_list.append(linux_obj)
# print(s1.course_list)

print(\'\'\'student name is:%s
    course name is :%s
    course price is :%s
    \'\'\' %(s1.name,s1.course_list[0].name,s1.course_list[0].price))

 

www.cnblogs.com/linhaifeng/articles/6182264.html

以上是关于面向对像(1day)的主要内容,如果未能解决你的问题,请参考以下文章

面向对像(8day)

面向对像(9day)

面向对像(2day)

面向对像(7day)

P61面向对像的02,回顾方法的定义

Python-面向对像及其他