python类的构造和方法

#!/usr/bin/env python3
#--*-- codeing=utf-8 --*--
#

import os,sys
class Role(object):
    ac=None
    def __init__(self,name,role,weapon,life_value):
        self.name=name
        self.role=role
        self.weapon=weapon
        self.life_val=life_value

    def buy_weapon(self,weapon):
        print("%s is buying weapon %s"%(self.name,weapon))
        self.weapon=weapon

    def buy_ac(self,ac):
        self.ac=ac

police = Role("carl",‘Police‘,"B10",100)
terrorist = Role("ChunYun",‘Terrorist‘,"B11",100)
police.buy_weapon("M16")
police.buy_ac("armor")
terrorist.buy_weapon("AK47")

print("\033[32mpolice weapon is",police.weapon,"ac is",police.ac)
print("terrorist weapon is",terrorist.weapon,"ac is \033[0m",terrorist.ac)
时间: 2024-10-13 10:53:48

python类的构造和方法的相关文章

python类的三种方法

一.先看语法,python 类语法中有三种方法,实例方法,静态方法,类方法. ps.python中self,cls的区别 普通实例方法,第一个参数需要是self,它表示一个具体的实例本身.如果用了staticmethod,那么就可以无视这个self,而将这个方法当成一个普通的函数使用.而对于classmethod,它的第一个参数不是self,是cls,它表示这个类本身. # coding:utf-8 class Foo(object): """类三种方法语法形式"&

python 类的几种方法(函数)

python中可以定义类,为面向对象语言. 在定义个class时,可以定义3中类型的方法.包括‘实例方法’.“类方法”,“静态方法”其中不同之处: python类的方法 类型 类访问 实例访问 意义 实例方法 不可以 可以   类方法 可以 可以   静态方法 可以 可以   1,实例方法 实例方法是最简单的一种方法,定义一个实例方法第一个默认的隐式传参标示调用当前方法的实例: #encoding:utf-8 #小五 class Person(object): def __init__(self

python—类的属性和方法总结

一.类的属性总结(类的属性定义在方法外,对象的属性定义在方法内) 理解: 类的(静态)属性:(人类的五官,理解为变量) 类的(动态)方法:(人类吃穿住行,理解为一个函数,至少带一个参数self,指向类本身) 对象:类的实例化,之后才能有属性和方法 1)类的属性,也是公有属性:类的私有属性 2)对象的公有属性:对象的私有属性 3)函数局部变量:全局变量 4)内置属性 #!/usr/bin/env python #encoding:utf-8 var6 = "全局变量var6" class

python——类的内置方法

双下方法 __str__和__repr__ 改变对象的字符串显示__str__,__repr__ obj.__str__ str(obj)obj.__repr__ repr(obj) class Teacher: def __init__(self,name,salary): self.name = name self.salary = salary def __str__(self): return "Teacher's object :%s"%self.name def __rep

关于 python 类与继承中方法调用 的 一个小知识点记录

(1)D类,多继承于C类与B类,C类与B类继承于A类.C类中没用__init__(), C类的实例化会先寻找第一个继承类是否存在__init__(),也就是B类的__init__().因为python3中使用的是广度优先的方法,寻找路径为D-->B-->C-->A 关于其他方法的继承,也是这个顺序. class A(object): def __init__(self): print("i am A") def call(self): print("A CA

python类中内置方法之__call__

在python中自定义类时,如果该类实现了一个特殊方法__call__(),那么该类的实例则变成一个可调用的实例对象 如下 In [1]: class A():# 自定义一个A ...: def __call__(self,args): # 实现特殊方法__call__ ...: print(args) ...: In [2]: a = A() In [3]: a("__call__") __call__ a = A() # 对自定义的类A,实例化一个对象aa("__call

Python类的内建方法-即所谓的魔术方法

在Python中以两个下划线开头的方法,__init__.__str__.__doc__.__new__等,被称为"魔术方法"(Magic methods).魔术方法在类或对象的某些事件出发后会自动执行,如果希望根据自己的程序定制自己特殊功能的类,那么就需要对这些方法进行重写.Python 将所有以 __包起来(即前后皆有__)的类方法保留为魔术方法. 注:如果只前面有双下划线__,则为私有方法或私有变量 一, A Guide to Python's Magic Methods Raf

Python类中的魔法方法之 __slots__

在类中每次实例化一个对象都会生产一个字典来保存一个对象的所有的实例属性,这样非常的有用处,可以使我们任意的去设置新的属性. 每次实例化一个对象python都会分配一个固定大小内存的字典来保存属性,如果对象很多的情况下会浪费内存空间. 可通过__slots__方法告诉python不要使用字典,而且只给一个固定集合的属性分配空间 class Foo(object): __slots__ = ("x","y","z") def __init__(sel

python 类中内置方法的重写

为达成目的,经常会在类中将一些内置方法进行重写,最常见的例如__setattr__,下面就通过内置属性,来查看重写会带来什么变化 先定义一个测试用的类,代码如下 class base: def __init__(self): pass inspect.getmembers(base): # 查看内置属性 打印结果如下 ('__class__', <class 'type'>) ('__delattr__', <slot wrapper '__delattr__' of 'object'