python_静态对象_socket,,面向对象的编程进阶静


面向对象的编程进阶静态方法加上staticmethod后这个函数虽然还在类里,但已经和类没有关系了,也不需要再调用self直接d = Dog("chenronghua")d.eat(d)举例:class Dog(object): def __init__(self, name, ): self.name = name @staticmethod#此时会报错缺少self def eat(self): print ("%s is eating"%(self.name))d = Dog("陈荣华")d.eat()TypeError: eat() missing 1 required positional argument: ‘self‘类方法类方法只能访问类比变量属性方法把一个方法变成一个静态属性class Dog(object): def __init__(self, name, ): self.name = name @property #attribute def eat(self): print ("%s is eating"%self.name)d = Dog("chenronghua")d.eat类的特殊成员方法__doc__#直接打印这个类的描述class Foo(object): """这个类是描述狗这个对象"""print (Foo.__doc__)__module__和__class____module__表示当前操作的对象在那个模块__class__ 表示当前的对象的类是什么__call__对象后面加括号,触发执行class Dog(object):def __cal__(self, *args, *kwargs)d = Dog("chenronghua")d(1,2,3,name="3333")__dict__打印类里的属性class Dog(object):def __cal__(self, *args, *kwargs)d = Dog("chenronghua")d(1,2,3,name="3333")#打印类里的属性print Dog.__dict__#打印d里的方法print d.__dict__反射hasattr(obj,name_str) getattr(obj_name_str)class Dog(object): def __init__(self, name): self.name = name def eat(self): print ("%s is eating..."%self.name)d = Dog("niu")choice = input(">>:").strip()if hasattr(d,choice): #判断对象里是否有对应的字符串的方法映射 func = getattr(d,choice) #根据字符串里的对象去获取对应的方法内存地址 func("chenronghua")def bulk(name):print ("%s da jiao "%name)class Dog(object): def __init__(self, name): self.name = name def eat(self,food): print ("%s eat %s"%(self.name,food))d = Dog("牛汉阳")# d.eat("chenronghua")def bulk(self): print ("yell %s"%self.name)choice = input(" >> : " )if hasattr(d,choice): print (hasattr(d,choice)) getattr(d,choice)("草")else: setattr(d,choice,bulk) getattr(d,choice)(d) #func = getattrt(d,choice) #func(d)SOCKETconn,addr = server.accept()conn是个客户端连接到服务器为其生成的一个实例addr 是个IP地址和端口

python_静态对象_socket

相关内容

    暂无相关文章

评论关闭