面向对象之反射及内置方法
2017-08-16 20:40
274 查看
一、静态方法(staticmethod)和类方法(classmethod)
类方法:有个默认参数cls,并且可以直接用类名去调用,可以与类属性交互(也就是可以使用类属性)
静态方法:让类里的方法直接被类调用,就像正常调用函数一样
类方法和静态方法的相同点:都可以直接被类调用,不需要实例化
类方法和静态方法的不同点:
类方法必须有一个cls参数表示这个类,可以使用类属性
静态方法不需要参数
绑定方法:分为普通方法和类方法
普通方法:默认有一个self对象传进来,并且只能被对象调用-------绑定到对象
类方法:默认有一个cls对象传进来,并且可以被类和对象(不推荐)调用-----绑定到类
非绑定方法:静态方法:没有设置默认参数,并且可以被类和对象(不推荐)调用-----非绑定
__len__
7.__hash__
面试题
纸牌游戏
类方法:有个默认参数cls,并且可以直接用类名去调用,可以与类属性交互(也就是可以使用类属性)
静态方法:让类里的方法直接被类调用,就像正常调用函数一样
类方法和静态方法的相同点:都可以直接被类调用,不需要实例化
类方法和静态方法的不同点:
类方法必须有一个cls参数表示这个类,可以使用类属性
静态方法不需要参数
绑定方法:分为普通方法和类方法
普通方法:默认有一个self对象传进来,并且只能被对象调用-------绑定到对象
类方法:默认有一个cls对象传进来,并且可以被类和对象(不推荐)调用-----绑定到类
非绑定方法:静态方法:没有设置默认参数,并且可以被类和对象(不推荐)调用-----非绑定
__len__
7.__hash__
面试题
from collections import namedtuple Card = namedtuple('Card',['rank','suit']) #两个属性:一个是数,一个是花色(每一个card的对象就是一张纸牌) class FranchDeck: #纸牌数据类型 ranks = [str(n) for n in range(2,11)] + list('JQKA') suits = ['红心','方板','梅花','黑桃'] def __init__(self): self._cards = [Card(rank,suit) for rank in FranchDeck.ranks #先循环这个,在循环下面的那个循环 for suit in FranchDeck.suits] def __len__(self): return len(self._cards) def __getitem__(self, item): return self._cards[item] def __setitem__(self, key, value): self._cards[key] = value deck = FranchDeck() # print(deck[0]) # print(deck[0]) # print(deck[0]) # print(deck[0]) from random import choice print(choice(deck)) print(choice(deck)) from random import shuffle shuffle(deck) print(deck[:5])
纸牌游戏
相关文章推荐
- 面向对象:反射、内置方法
- 面向对象之绑定方法和非绑定方法、反射、内置方法
- 面向对象之反射和内置方法
- day34 反射、面向对象内置方法:如__str__、面向对象的软件开发
- 类的内置方法 和 面向对象进阶
- python ——面向对象进阶(反射,双下线方法,静态方法,类方法)
- 面向对象内置方法
- python3 面向对象__类的内置属性与方法的实例代码
- JS面向对象继承方法
- 方法,数组,面向对象思想
- java面向对象之类、属性、方法
- java反射调用某个对象的方法
- jsp常用内置对象及方法简述
- PHP面向对象有哪些魔术方法
- 【Java Web开发】认识JSP 9个内置对象和序号方法说明
- java反射调用配置文件构造类对象,使用其方法
- JSP的八大内置对象及方法
- 面向对象分析方法(Object-Oriented Analysis,OOA)
- 面向对象的程序设计(三)对象字面量创建原型方法与直接创建原型方法的区别
- PHP面向对象之旅:类的方法