Skip to content

Instantly share code, notes, and snippets.

@feiji110
Last active April 12, 2020 04:38
Show Gist options
  • Save feiji110/67407bc6cb44673186f07bbc39b448a9 to your computer and use it in GitHub Desktop.
Save feiji110/67407bc6cb44673186f07bbc39b448a9 to your computer and use it in GitHub Desktop.
200412_pyhon类和对象
class A():
    count = 0
    def __init__(self):
        A.count += 1
    @classmethod #参数指向当前类
    def kid(cls):
        print('A has',cls.count,'little objects')
    @staticmethod#静态方法 不需要参数 仅仅组织代码
    def static_method():
        print('Static method called')
easy_a = A()
breezy_a = A()
wheezy_a = A()
A.count
@feiji110
Copy link
Author

PYTHON 动态类型 鸭子类型 包容风格

# 实现多态相当宽松: 不同对象调用同名操作
class Que():
    def __init__(self,person,words):
        self.person = person
        self.words = words
    def who(self):
        return self.person
    def says(self):zh
        return self.words + '.'
class QQue(Que):
    def says(self):#只重写了says方法,其他继承自Que
        return self.words +  '?'
class  EQue(Que):
    def says(self):
        return self.words + '!'
    
#h1 = Que('Elemer', 'hello')
#print(h1.who(),'says',h1.says())
#h2 = QQue('Bunny', 'hi')
#print(h2.who(),'says',h2.says())
#h3 = EQue('Daffy', 'haha')
#print(h3.who(),'says',h3.says())
def who_says(obj):
    print(obj.who(),'says',obj.says())
who_says(h2)

@feiji110
Copy link
Author

class Bab():
    def who(self):
        return 'Bab'
    def says(self):
        return 'Biu'#只要有who,says方法,就可以调用who_says
biu = Bab()
who_says(biu)

@feiji110
Copy link
Author

魔法方法

'ha' =='HA'#False
class Word():
    def __init__(self,text):
         self.text = text
    def equals(self,word2):
        return self.text.lower() == word2.text.lower()  
first = Word('ha')
second = Word('HA')
first == second#False
first.equals(second)#True
class Word():
    def __init__(self,text):
         self.text = text
    def __eq__(self,word2):## 区别第一个的 defequals(self,word2):
        return self.text.lower() == word2.text.lower()    
first = Word('ha')
second = Word('HA')
first == second#True

@feiji110
Copy link
Author

feiji110 commented Apr 12, 2020

repr : print输出的东西

class Word():
    def __init__(self,text):
         self.text = text
    def equals(self,word2):
        return self.text.lower() == word2.text.lower()    
    def __str__(self):
        return self.text
    def __repr__(self):# 变量输出什么
        return 'Word("'+self.text +'")'
first = Word('ha')
print(first)#ha

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment