1 #__author: Administrator 2 #date: 2016/9/23 3 """ 4 class Foo: 5 6 def __init__(self, name, age): 7 self.name = name 8 # self.age = age 9 self.__age = age # 私有,外部无法直接访问 10 11 def show(self): 12 return self.__age 13 14 15 obj = Foo(‘alex‘, 19) 16 print(obj.name) 17 # obj.age 18 # print(obj.__age) 19 ret = obj.show() 20 print(ret) 21 """ 22 23 """ 24 class Foo: 25 __v = ‘123‘ 26 27 def __init__(self): 28 pass 29 def show(self): 30 return Foo.__v 31 @staticmethod 32 def stat(): 33 return Foo.__v 34 # print(Foo.__v) 35 # ret = Foo().show() 36 # print(ret) 37 38 ret = Foo.stat() 39 print(ret) 40 """ 41 """ 42 class Foo: 43 def __f1(self): 44 return 123 45 46 def f2(self): 47 r = self.__f1() 48 return r 49 50 obj = Foo() 51 ret = obj.f2() 52 print(ret) 53 """ 54 55 """ 56 class F: 57 def __init__(self): 58 self.ge = 123 59 self.__gene = 123 60 61 class S(F): 62 def __init__(self,name): 63 self.name = name 64 self.__age = 18 65 super(S, self).__init__() 66 67 def show(self): 68 print(self.name) 69 print(self.__age) 70 print(self.ge) 71 print(self.__gene) 72 73 s = S(‘alex‘) 74 s.show() 75 """ 76 77 """ 78 class Foo: 79 def __init__(self): 80 print(‘init‘) 81 82 def __call__(self, *args, **kwargs): 83 print(‘call‘) 84 85 # obj = Foo() 86 # obj() 87 Foo()() 88 """ 89 # s = "123" 90 # # s = str(‘123‘) 91 # 92 # i = int(s) 93 # print(i,type(i)) 94 95 """ 96 class Foo: 97 98 def __init__(self): 99 pass 100 101 def __int__(self): 102 return 1111 103 104 def __str__(self): 105 return ‘alex‘ 106 107 obj = Foo() 108 print(obj, type(obj)) 109 110 # int,对象,自动执行对象的 __int__方法,并将返回值赋值给int对象 111 r = int(obj) 112 print(r) 113 i = str(obj) 114 print(i) 115 116 """ 117 """ 118 class Foo: 119 120 def __init__(self,n,a): 121 self.name =n 122 self.age =a 123 124 def __str__(self): 125 return ‘%s-%s‘ %(self.name,self.age,) 126 127 obj = Foo(‘alex‘, 18) 128 print(obj) #print(str(obj)) str(obj) obj中__str__,并获取其返回值 129 """ 130 """ 131 class Foo: 132 133 def __init__(self, name,age): 134 self.name = name 135 self.age = age 136 137 def __add__(self, other): 138 # self = obj1 (alex,19) 139 # other = obj2(eric,66) 140 # return self.age + other.age 141 #return Foo(‘tt‘,99) 142 return Foo(obj1.name, other.age) 143 144 def __del__(self): 145 print(‘析构方法‘) # 对象被销毁()时,自动执行 146 147 obj1 = Foo(‘alex‘, 19) 148 obj2 = Foo(‘eirc‘, 66) 149 150 r = obj1 + obj2 151 # 两个对象相加时,自动执行第一个对象的的 __add__方法,并且将第二个对象当作参数传递进入 152 print(r,type(r)) 153 """ 154 155 156 """ 157 class Foo: 158 def __init__(self, name,age): 159 self.name = name 160 self.age = age 161 self.n = 123 162 163 # obj = Foo(‘alex‘, 18) 164 # 165 # d = obj.__dict__ 166 # print(d) 167 168 # ret = Foo.__dict__ 169 # print(ret) 170 """ 171 172 # li = [11,22,33,44] 173 # li = list([11,22,33,44]) 174 # 175 # li[3] 176 # # 177 # 178 # li[3] = 666 179 # 180 # del li[2] 181 182 """ 183 class Foo: 184 185 def __init__(self, name,age): 186 self.name = name 187 self.age = age 188 189 def __getitem__(self, item): 190 return item+10 191 192 def __setitem__(self, key, value): 193 print(key,value) 194 195 def __delitem__(self, key): 196 print(key) 197 li = Foo(‘alex‘, 18) 198 r= li[8] # 自动执行li对象的类中的 __getitem__方法,8当作参数传递给item 199 print(r) 200 201 li[100] = "asdf" 202 203 del li[999] 204 """ 205 """ 206 class Foo: 207 208 def __init__(self, name,age): 209 self.name = name 210 self.age = age 211 212 def __getitem__(self, item): 213 # return item+10 214 # 如果item是基本类型:int,str,索引获取 215 # slice对象的话,切片 216 if type(item) == slice: 217 print(‘调用这希望内部做切片处理‘) 218 else: 219 print(item.start) 220 print(item.stop) 221 print(item.step) 222 print(‘调用这希望内部做索引处理‘) 223 224 def __setitem__(self, key, value): 225 print(key,value) 226 227 def __delitem__(self, key): 228 print(key) 229 230 li = Foo(‘alex‘, 18) 231 li[123] 232 li[1:4:2] 233 234 li[1:3] = [11,22] 235 236 del li[1:3] 237 238 # class Slice: 239 # def __init__(self,a,b,c): 240 # self.start = a 241 # self.end = b 242 # self.step = c 243 # obj = Slice(1,4,2) 244 # li[999] = "alex" 245 # 246 # del li[234] 247 """ 248 """ 249 class Foo: 250 251 def __init__(self, name,age): 252 self.name = name 253 self.age = age 254 255 def __iter__(self): 256 return iter([11,22,33]) 257 li = Foo(‘alex‘, 18) 258 # 如果类中有 __iter__ 方法,对象=》可迭代对象 259 # 对象.__iter__() 的返回值: 迭代器 260 # for 循环,迭代器,next 261 # for 循环,可迭代对象,对象.__iter__(),迭代器,next 262 # 1、执行li对象的类F类中的 __iter__方法,并获取其返回值 263 # 2、循环上一步中返回的对象 264 for i in li: 265 print(i) 266 """ 267 # li = [11,22,33,44] 268 # li= list([11,22,33,44]) 269 # for item in li: 270 # print(item) 271 272 """ 273 class MyType(type): 274 def __init__(self,*args, **kwargs): 275 # self=Foo 276 print(123) 277 pass 278 279 def __call__(self, *args, **kwargs): 280 # self=Foo 281 r = self.__new__() 282 283 284 # 285 286 class Foo(object,metaclass=MyType): 287 def __init__(self): 288 pass 289 290 def __new__(cls, *args, **kwargs): 291 return ‘对象‘ 292 293 def func(self): 294 print(‘hello wupeiqi‘) 295 296 obj = Foo() 297 298 299 300 301 302 class Bar: 303 def __init__(self): 304 print(123) 305 306 307 obj = Bar() 308 """ 309 310 """ 311 while True: 312 try: 313 # 代码块,逻辑 314 inp = input(‘请输入序号:‘) 315 i = int(inp) 316 except Exception as e: 317 # e是Exception对象,对象中封装了错误信息 318 # 上述代码块如果出错,自动执行当前块的内容 319 print(e) 320 i = 1 321 print(i) 322 """ 323 #li = [11,22] 324 #li[999] # IndexError 325 # int(‘qwe‘) # ValueError 326 """ 327 def fun(): 328 ret = 0 329 try: 330 li = [11, 22] 331 li[1] 332 int(‘w3r‘) 333 334 except IndexError as e: 335 print(‘IndexError‘,e) 336 except ValueError as e: 337 print(‘ValueError‘,e) 338 except Exception as e: 339 print(‘Exception‘,e) 340 else: 341 ret = 1 342 print(‘elese‘) 343 finally: 344 print(‘....‘) 345 346 return ret 347 r = fun() 348 if r == 0: 349 print(‘500‘) 350 else: 351 pass 352 353 """ 354 """ 355 class F: 356 def __init__(self): 357 self.__a = 132 358 359 def show(self): 360 # print(self.__a) 361 return self.__a 362 363 class S(F): 364 def __init__(self): 365 self.name = 123 366 super(S, self).__init__() 367 368 obj = S() 369 r = obj.show() 370 print(r) 371 """ 372 """ 373 try: 374 # int(‘asdf‘) 375 # 主动出发异常 376 # raise Exception(‘不过了...‘) 377 except Exception as e: 378 print(e) 379 380 def db(): 381 # return True 382 return False 383 384 def index(): 385 try: 386 r = input(">>") 387 int(r) 388 389 390 result = db() 391 if not result: 392 r = open(‘log‘,‘a‘) 393 r.write(‘数据库处理错误‘) 394 # 打开文件,写日志 395 #raise Exception(‘数据库处理错误‘) 396 except Exception as e: 397 str_error = str(e) 398 print(str_error) 399 r = open(‘log‘, ‘a‘) 400 r.write(str_error) 401 # 打开文件,写日志 402 403 index() 404 """ 405 406 407 """ 408 class OldBoyError(Exception): 409 410 def __init__(self, msg): 411 self.message = msg 412 413 def __str__(self): 414 return self.message 415 416 # obj = OldBoyError(‘xxx‘) 417 # print(obj) 418 try: 419 raise OldBoyError(‘我错了...‘) 420 except OldBoyError as e: 421 print(e)# e对象的__str__()方法,获取返回 422 423 """ 424 425 # assert 条件,断言,用于强制用户服从,不服从就报错,可补货,一般不补货 426 # print(23) 427 # assert 1==2 428 # print(456) 429 430 431 """ 432 class Foo: 433 def __init__(self, name,age): 434 self.name = name 435 self.age = age 436 437 def show(self): 438 return "%s-%s " %(self.name,self.age) 439 def __int__(self): 440 return 123 441 def __str__(self): 442 return ‘uuu‘ 443 obj = Foo(‘alex‘, 18) 444 445 r = int(obj) # r = 123 446 u = str(obj) 447 b = ‘name‘ 448 """ 449 450 451 # getattr 452 # hasattr 453 # setattr 454 # delattr 455 # 通过字符串的形式操作对象中的成员 456 457 # func = getattr(obj, ‘show‘) 458 # print(func) 459 # r = func() 460 # print(r) 461 462 # print(hasattr(obj, ‘name‘)) 463 # obj.k1 464 # setattr(obj, ‘k1‘, ‘v1‘) 465 # print(obj.k1) 466 # obj.name 467 # delattr(obj, ‘name‘) 468 # obj.name 469 470 # 去什么东西里面获取什么内容 471 # inp = input(‘>>>‘) 472 # v = getattr(obj, inp) 473 # print(v) 474 475 476 477 """ 478 obj.name 479 b = "name" 480 obj.b # obj.name 481 """ 482 # b = "name" 483 # obj.__dict__[‘name‘] 484 # obj.__dict__[b] 485 486 # if b == ‘name‘: 487 # obj.name 488 489 490 """ 491 class Foo: 492 493 stat = ‘123‘ 494 495 def __init__(self, name,age): 496 self.name = name 497 self.age = age 498 499 # 通过字符串的形式操作对象中的成员 500 r = getattr(Foo, ‘stat‘) 501 print(r) 502 """ 503 504 """ 505 import s2 506 507 508 # r1 = s2.NAME 509 # print(r1) 510 # r2 = s2.func() 511 # print(r2) 512 513 r1 = getattr(s2, ‘NAME‘) 514 print(r1) 515 516 r2 = getattr(s2, ‘func‘) 517 result = r2() 518 print(result) 519 520 cls = getattr(s2, ‘Foo‘) 521 print(cls) 522 obj = cls() 523 print(obj) 524 print(obj.name) 525 """ 526 """ 527 import s2 528 inp = input(‘请输入要查看的URL:‘) 529 if hasattr(s2, inp): 530 func = getattr(s2, inp) 531 result = func() 532 print(result) 533 else: 534 print(‘404‘) 535 """ 536 537 # class Foo: 538 # def __init__(self, name,age): 539 # self.name = name 540 # self.age = age 541 542 # obj = Foo() # obj对象,obj也成为Foo类的 实例,(实例化) 543 # obj1 = Foo() 544 # obj2 = Foo() 545 # obj3 = Foo() 546 547 # 单例,用于使用同一份实例(对象) 548 """ 549 class Foo: 550 def __init__(self, name,age): 551 self.name = name 552 self.age = age 553 554 def show(self): 555 print(self.name,self.age) 556 557 v = None 558 559 while True: 560 if v: 561 v.show() 562 else: 563 v = Foo(‘alex‘, 123) 564 v.show() 565 """ 566 class Foo: 567 568 __v = None 569 570 @classmethod 571 def get_instance(cls): 572 if cls.__v: 573 return cls.__v 574 else: 575 cls.__v = Foo() 576 return cls.__v 577 578 # 不要在使用 类() 579 obj1 = Foo.get_instance() 580 print(obj1) 581 obj2 = Foo.get_instance() 582 print(obj2) 583 obj3 = Foo.get_instance() 584 print(obj3)
原文:https://www.cnblogs.com/wangbin2020/p/13128499.html