| CARVIEW |
?mPython?N?C?Y?n???\?b?h?̌Ăяo?????A???ꂱ??@????ȌĂяo???????ł???̂??ȁH?FPython?X?e?b?v?A?b?v?N?C?Y
???\?b?h???āA?I?u?W?F?N?g?Ƀh?b?g??t???Ė??O???????āc?c?Ƃ????????ȊO?ɂ͂???????̂????ŌĂяo???܂??B?ǂ?Ȃ?????????̂??A??????ƍl???Ă݂܂??H
???̋L???͉??????ł??B????o?^?i?????j????ƑS?Ă????????????܂??B
?y???z
?@?ȉ???Foo?N???X???`???āA???̃C???X?^???X???쐬???Afoo_method???\?b?h???Ăяo???R?[?h?ł???B?I????1????I????4?̒??ŗ?O???????邱?ƂȂ??Ăяo????????????̂͂ǂꂾ?낤?i?????I???\?j?B
class Foo:
def foo_method(self, msg):
print(f'{msg} from Foo')
f = Foo()
# ?I????1
f.foo_method('hello')
# ?I????2
Foo.foo_method('hello')
# ?I????3
getattr(Foo, 'foo_method')('hello')
# ?I????4
Foo.__dict__['foo_method'](f, 'hello')
????邩?ȁH
?@??̃R?[?h??ł͊???̑I????????O???????܂??B?????ŁA?????ChatGPT?iGPT 5.1?j??Gemini?iGemini 3 Pro?̎v?l???[?h?j?A???ꂩ??Claude?iOpus 4.5?j??3??LLM?ɗ?O???????Ȃ????\?b?h?Ăяo???̂??????l???Ă??炢?A??ԑ????̂??????l????LLM???G???????Ƃɂ??܂????B?ǂ??Ȃ??????ȁH
?@?ǂ???HP???킳???ł??B
?@??T?̓N?C?Y?????J??????[???ă|?X?g?????S?ɖY??Ă??܂??Ă??܂????B????A????X?̃p?X???[?h??Y??Ă????Ƃ????̂??????ł??B???d???ōb?{?ɂ????̂ł????A?p?X???[?h?Ǘ????u???E?U?C???ɂ??Ă??????߂ɁA?m?[?gPC????X?Ƀ??O?C???ł??Ȃ??????̂ł????i???i?g???̃u???E?U?Ƃ??̃A?J?E???g???^?p???Ă???u???E?U???Ⴄ??ł??j?B?????????Ƃ??낪?A?????ɂ????????Ȃ??Ɓc?c?i?j?B???͂????????C??t???܂??B
?y?????z
?@?I????1?́uf.foo_method('hello')?v?ƑI????4?́uFoo.__dict__['foo_method'](f, 'hello')?v?ł??B
?@?I????1?͒ʏ?̃??\?b?h?Ăяo???ŁA?I????4?͎????I?ɂ́uFoo.foo_method(f, 'hello')?v?Ăяo???ƂȂ?܂??B?I????2?ƑI????3?͎????I?ɂ?Foo.foo_method?????Ăяo?????Ƃ??Ă??܂??B???̏ꍇ??self??msg??2?̈?????n???K?v??????܂????A'hello'?????n???Ă??Ȃ??̂?TypeError??O?????????܂??B
?y????z
?@??蕶?̃R?[?h?͎??̂悤?Ȃ??̂ł????B
class Foo:
def foo_method(self, msg):
print(f'{msg} from Foo')
f = Foo()
# ?I????1
f.foo_method('hello')
# ?I????2
Foo.foo_method('hello')
# ?I????3
getattr(Foo, 'foo_method')('hello')
# ?I????4
Foo.__dict__['foo_method'](f, 'hello')
?@?ȉ??ł?????Ɛ[?@?肵?Ă݂܂??B
?o?E???h???\?b?h?Ɗ?
?@Foo?N???X?ɂ?foo_method?Ƃ??????\?b?h????`????Ă??܂??B?I????1?͒ʏ?̃??\?b?h?Ăяo???Ȃ̂ŁA???????A????͌Ăяo???ɐ??????܂??B???̑I????2?uFoo.foo_method('hello')?v?ɂ??čl???Ă݂܂??傤?B
?@????́uFoo?N???X??foo_method?Ƃ????Ăяo???\?ȑ????ɃA?N?Z?X???Ă???v?ƌ??邱?Ƃ??ł??܂??B?܂?AFoo.foo_method?̓??\?b?h?ł͂Ȃ??āA?uFoo?N???X?̎????i???O??ԁj?ɓo?^????Ă???foo_method?Ƃ????????i???I?u?W?F?N?g?j?v?Ƃ??Ĉ????Ă???ƌ????????Ă??????ł??傤?B
?@???ۂɂ????Ȃ̂????????Ă݂܂??BFoo?N???X?̃C???X?^???X?ł???f?̑????Ƃ??ăA?N?Z?X????uf.foo_method?v??Foo?N???X?̑????Ƃ??ăA?N?Z?X????uFoo.foo_method?v?ɍ???????̂??????Ă݂܂??傤?B
print(f.foo_method)
print(Foo.foo_method)
?@???s???ʂ??ȉ??Ɏ????܂??B
?@?????̒ʂ?A?uf.foo_method?v?́ubound method?v?i?o?E???h???\?b?h?j?ŁA?uFoo.foo_method?v?́ufunction?v?i???j?ł??邱?Ƃ???????܂??B?????ł????u?o?E???h???\?b?h?v?Ƃ́u????̃I?u?W?F?N?g?Ɍ??ѕt????ꂽ???\?b?h?v?Ƃ????Ӗ??ŁA?????ł?Foo?N???X?̃C???X?^???X?ł???f?Ɍ??ѕt????ꂽ???\?b?h?ł??邱?Ƃ??????Ă??܂??i?Z?p?I?ȏڍׂ͂܂??܂??[?@??ł??܂????A?????ł́u???ѕt????ꂽ?v?ƕ\?????邾???ŁA????ȏ?̂??Ƃ͏q?ׂȂ????Ƃɂ??܂??傤?j?B
?@???̂??Ƃ?\???Ă???̂??ŏ??̏o?͂́uFoo.foo_method of <__main__.Foo object at 0x10a4b2f90?v?Ƃ????Ƃ???ł??B????́u0x10a4b2f90?ɂ???Foo?N???X?̃I?u?W?F?N?g??Foo.foo_method?Ɍ??ѕt?????Ă???v???Ƃ????????̂ł??B?Ƃ????킯?ŁAf?I?u?W?F?N?g??ID?ׂĂ݂܂??B
print(hex(id(f)))
?@????????s????ƁA???ʂ͎??̒ʂ?B?uf.foo_method?v?̕\???ɂ??????u0x10a4b2f90?v?Ɠ??????̂??o?Ă??܂????B
?@f.foo_method??f?I?u?W?F?N?g?Ɍ??ѕt????ꂽ?o?E???h???\?b?h?ł??邱?Ƃ??m?F?ł??܂????B?o?E???h???\?b?h???Ăяo???ۂɂ́APython?̏????n??self?Ƃ??āA???ѕt?????Ă???I?u?W?F?N?g???????I?ɓn???Ă????悤?ɂȂ??Ă???̂??~?\?ł??B?܂?A?uf.foo_method('hello')?v?Ƃ???ƁAfoo_method?̑?0?p?????[?^?[?ł???self?ɁAf?I?u?W?F?N?g???????I?ɓn?????Ƃ??????Ƃł??B
?@???ꂪ???\?b?h?Ăяo???ɁA???̃I?u?W?F?N?g???w?肵?Ȃ??Ă??ςޗ??R?Ƃ????܂??B
?@????ɑ??āAFoo.foo_method?͐?قǂ̏o?͌??ʂ??????????悤?Ɋ??ł??B?o?E???h???\?b?h?ł͂Ȃ??̂ŁAFoo.foo_method?????Ăяo???Ƃ??ɂ?self??msg??2?̃p?????[?^?[?ɒl??n???Ȃ???????܂???B???????A?I????2?́uFoo.foo_method('hello')?v??1??????????n???Ă??܂???B???̂??߁A??O???????????Ƃ????킯?ł??B
?????ɃA?N?Z?X???????̕??@
?@f.foo_method?̓o?E???h???\?b?h?ŁAFoo.foo_method?͊??ł??邱?Ƃ͕?????܂????B?????āA???̈Ⴂ?????邽?߂ɑI????1?͖??Ȃ??Ăяo???āA?I????2?͗?O???????邱?Ƃ???????܂????B
?@?ł͑I????3?ƑI????4?͂ǂ??ł??傤?B
# ?I????3
getattr(Foo, 'foo_method')('hello')
# ?I????4
Foo.__dict__['foo_method'](f, 'hello')
?@?I????3?ƑI????4?̈Ⴂ?͑O?҂?getattr?????A??҂?Foo.__dict__???????g???Ă???_?ł??B??????Foo.__dict__?????͂??̃N???X?̑?????ۑ????鎫???I?ȃI?u?W?F?N?g?ł??B
?@?????āA?????2?͂??????Foo?N???X????'foo_method'?????̒l?????o?????߂Ɏg???Ă??܂??B'foo_method'?????̒l?͂??????Ăяo???\?ȃI?u?W?F?N?g?Ȃ̂ŁA????ɂ???????t???Ĉ?????n???āA???ۂɌĂяo???Ă???Ƃ????̂???̃R?[?h?̐????ł??B??????₷???????????Ύ??̂悤?ɂȂ?܂??B
# ?I????3
f0 = getattr(Foo, 'foo_method')
f0('hello')
# ?I????4
f1 = Foo.__dict__['foo_method']
f1(f, 'hello')
?@?????ŏd?v?Ȃ̂́A??????̕??@??Foo?N???X?̑????Ƃ???foo_method?????o???Ă???_?ł??B????getattr???ɃN???X??n?????ꍇ?ɂ́A?N???X???瑮???????o?????߁A?I????2?Ɠ??l?Ƀo?E???h???\?b?h?ł͂Ȃ??u?P?Ȃ???v???Ԃ??Ă??܂??B???̂??߁A?Ăяo???ɂ?2?̈??????K?v?ɂȂ?܂??igetattr???ɃN???X?ł͂Ȃ??A???̃C???X?^???X??n?????ꍇ?ɂ??Ă͌?q???܂??j?B?I????4??__dict__???????g?????ꍇ?????l?ɁA????????'foo_method'?̒l?ł?????I?u?W?F?N?g?ڎ擾???邱?ƂɂȂ?A????????Ăяo???ɂ?2?̈??????K?v?ɂȂ?܂??B
?@???̕ӂ?̂??b???ڂ??????????Ƃ???ƃf?B?X?N???v?^???]?X?ƂȂ??āA?[?@?肵?߂???Ɗ댯?ȁi??ɕM?҂̒m?????ǂ????Ȃ??j?̂ŁA?ƂĂ??U?b?N???Ƃ??????̂ɂȂ??Ă??܂??̂ŁA??낵??????????????????Ǝv???܂??i?j?B
?@???̂悤?ɁA?I????3?ƑI????4?ł́A?ǂ???????????o???Ă??āA?Ăяo???ɂ?2?̈??????K?v?ł??B???̂Ƃ??A?I????3?ł?1?̈????????n???Ă??Ȃ????߂ɗ?O?????????A?I????4?ł͈?????2?n???Ă???̂Ŗ??Ȃ??Ăяo????Ƃ??????Ƃł??B
?@?Ō?ɁAgetattr????Foo?N???X?ł͂Ȃ??A???̃I?u?W?F?N?g?ł???f??n?????ꍇ?ɂ??Č??Ă݂܂??傤?i?I?????ɂ͂Ȃ??ł????j?B
m = getattr(f, 'foo_method')
print(m)
m('hello')
?@???s???ʂ??ȉ??Ɏ????܂??B
?@???͂??̂Ƃ??ɂ̓o?E???h???\?b?h???????܂??B?Ƃ??????Ƃ́Aself?ɂ͎????I?Ɍ??̃I?u?W?F?N?g???n?????̂ŁA????ꂽ?Ăяo???\?I?u?W?F?N?g?Ɉ?????1?????n???????ŌĂяo???܂??B
?@?I????3???ugetattr(Foo, 'foo_method')(f, 'hello')?v??ugetattr(f, 'foo_method')('hello')?v?ł??????Ȃ??O?????????ɌĂяo?????\???????̂ł????A?????ł̓s???|?C???g?Ń_???ȏꍇ???I?????ɂȂ??Ă????Ƃ????킯?ł??ˁB
?@?ł́A3??LLM?͂ǂ̂悤?ɓ????Ă??ꂽ?ł??傤?B?ȉ??͎??Ȑ\???ł̂????̎?ނ?p?^?[???ł??B
- ChatGPT?F?????ɂ??邯?ǁA??\?I?Ȃ??̂?5???
- Gemini?F???4?̃p?^?[??
- Claude?F????????12?p?^?[??
?@?M?҂̐q?˕????????????̂?????܂????A?F????A????????̂??????????Ă???܂????B?????܂œo?ꂵ?Ă??Ȃ??????Ƃ??Ă͈ȉ??̂悤?Ȃ??̂????????Ă??܂??B
- operator.methodcaller???g??
- ?f?B?X?N???v?^???g??
- types.MethodType???g??
- vars?????g??
- __getattribute__?A__func__???g??
- type?????g??
- etc
?@???̕??ɂ́u?m???ɉ\?????ǁAChatGPT??Gemini?͂????ċ????Ȃ??????̂ł́H?v?Ǝv???悤?Ȃ??̂?????܂????A?܂??A?????Claude????ԃG?????????Ƃ??????Ƃɂ??܂??傤?B???߂łƂ????????܂??B?߂ł??????͒m??ǁi?j?B
?uPython?X?e?b?v?A?b?v?N?C?Y?v
AI?E?f?[?^?T?C?G???X?̊w?т?????????
???S?Ҍ????A?f?[?^???́EAI?E?@?B?w?K?EPython?̕????@?@??IT??Deep Insider?Ŋw?ڂ?
Copyright© Digital Advantage Corp. All Rights Reserved.
?A?C?e?B???f?B?A????̂??m?点
??IT eBook
?ҏW??????̂??m?点
RSS?ɂ???
?A?C?e?B???f?B?AID?ɂ???
???[???}?K?W???o?^
??IT?̃??[???}?K?W???́A ???????A???ׂĖ????ł??B???Ѓ??[???}?K?W???????w?ǂ????????B
ITmedia?̓A?C?e?B???f?B?A??????Ђ̓o?^???W?ł??B
???f?B?A?ꗗ | ????SNS | ?L???ē? | ???₢???킹 | ?v???C?o?V?[?|???V?[ | RSS | ?^?c??? | ?̗p??? | ??????











