คำถามติดแท็ก methods

เมธอดคือบล็อกของโค้ดที่ทำงานและเชื่อมโยงกับคลาสหรือวัตถุ มันเกี่ยวข้องกับแนวคิดที่ไม่ใช่เชิงวัตถุของฟังก์ชั่นและขั้นตอน

11
วิธีการตั้งชื่อโรงงานเช่นวิธีการ?
createผมคิดว่าส่วนใหญ่โรงงานเช่นวิธีการเริ่มต้นด้วย แต่ทำไมถึงเรียกว่า " สร้าง " ทำไมไม่ " สร้าง ", " สร้าง ", " สร้าง ", " สร้าง " หรืออย่างอื่น มันเป็นเพียงเรื่องของการลิ้มรสหรือไม่? การประชุมหรือไม่? หรือมีความหมายพิเศษใน "สร้าง"? createURI(...) makeURI(...) produceURI(...) buildURI(...) generateURI(...) คุณจะเลือกแบบไหนและทำไม?

6
คลาส C ++ enum สามารถมีเมธอดได้หรือไม่?
ฉันมีคลาส enum ที่มีค่าสองค่าและฉันต้องการสร้างวิธีที่รับค่าและส่งกลับค่าอื่น ฉันต้องการรักษาความปลอดภัยประเภท (นั่นคือเหตุผลที่ฉันใช้คลาส enum แทน enums) http://www.cplusplus.com/doc/tutorial/other_data_types/ไม่ได้พูดถึงวิธีการใด ๆ อย่างไรก็ตามฉันรู้สึกว่าคลาสทุกประเภทสามารถมีวิธีการได้
145 c++  methods  enums 

19
วิธีการที่ปลอดภัย Python เพื่อรับค่าของพจนานุกรมที่ซ้อนกัน
ฉันมีพจนานุกรมที่ซ้อนกัน มีวิธีเดียวเท่านั้นที่จะนำค่าออกมาใช้อย่างปลอดภัยหรือไม่? try: example_dict['key1']['key2'] except KeyError: pass หรือบางทีหลามอาจมีวิธีการที่เหมือนget()กันสำหรับพจนานุกรมซ้อนกัน?

1
ตรวจสอบการเรียกใช้เมธอดโดยใช้ Moq
ฉันค่อนข้างใหม่ในการทดสอบหน่วยใน C # และเรียนรู้การใช้ Moq ด้านล่างเป็นชั้นเรียนที่ฉันพยายามทดสอบ class MyClass { SomeClass someClass; public MyClass(SomeClass someClass) { this.someClass = someClass; } public void MyMethod(string method) { method = "test" someClass.DoSomething(method); } } class Someclass { public DoSomething(string method) { // do something... } } ด้านล่างนี้เป็น TestClass ของฉัน: class MyClassTest { [TestMethod()] public …
142 c#  testing  methods  moq 

8
เมธอด unbound f () ต้องถูกเรียกด้วย fibo_ เช่นเป็นอาร์กิวเมนต์แรก (มีอินสแตนซ์ classobj แทน)
ใน Python ฉันพยายามเรียกใช้เมธอดในคลาสและฉันได้รับข้อผิดพลาด: Traceback (most recent call last): File "C:\Users\domenico\Desktop\py\main.py", line 8, in <module> fibo.f() TypeError: unbound method f() must be called with fibo instance as first argument (got nothing instead) รหัส: (swineflu.py) class fibo: a=0 b=0 def f(self,a=0): print fibo.b+a b=a; return self(a+1) สคริปต์ main.py import swineflu f = …
139 python  methods 

9
เหตุใดวิธีการคงที่จึงถือว่าเป็นวิธีการ
ฉันกำลังเขียนคำอธิบายรหัสสำหรับหลักสูตรและบังเอิญใช้คำmethodและfunctionสลับกันไปมา ฉันตัดสินใจที่จะกลับไปแก้ไขคำพูดนั้น แต่ก็พบกับช่องโหว่ในความเข้าใจของฉัน จากสิ่งที่ฉันเข้าใจรูทีนย่อยคือfunctionถ้ามันไม่ทำงานกับอินสแตนซ์ของคลาส (เอฟเฟกต์ถูก จำกัด ไว้ที่อินพุต / เอาท์พุตอย่างชัดเจน) และmethodถ้ามันทำงานบนอินสแตนซ์ของคลาส (มันอาจมี ออกผลข้างเคียงในกรณีที่ทำให้ไม่บริสุทธิ์) มีการอภิปรายที่ดีในหัวข้อนี้ โปรดทราบว่าตามคำจำกัดความของคำตอบที่ยอมรับแล้วสแตติกmethodควรเป็นฟังก์ชันเนื่องจากอินสแตนซ์จะไม่ถูกส่งผ่านโดยปริยายและไม่มีการเข้าถึงสมาชิกของอินสแตนซ์ใด ๆ ด้วยเหตุนี้จึงไม่ควรนิ่งmethodsเป็นฟังก์ชันใช่หรือไม่? ตามความหมายของพวกเขาพวกเขาไม่ได้ดำเนินการกับกรณีเฉพาะของคลาส พวกเขา "ผูก" กับชั้นเรียนเพราะความสัมพันธ์เท่านั้น ฉันเคยเห็นไซต์ที่ดูดีสองสามแห่งที่อ้างถึงรูทีนย่อยแบบคงที่เป็น "วิธีการ" แม้ว่า ( Oracle , Fredosaurus , ProgrammingSimplified ) ดังนั้นพวกเขาทั้งหมดมองข้ามคำศัพท์หรือฉันพลาดอะไรบางอย่าง (ฉันเดาว่าเป็นอย่างหลัง) . ฉันต้องการให้แน่ใจว่าฉันใช้ถ้อยคำที่ถูกต้อง ใครช่วยเคลียร์เรื่องนี้ได้ไหม

12
ใน Java ฉันจะเรียกวิธีการของคลาสพื้นฐานจากวิธีการเอาชนะในคลาสที่ได้รับมาได้อย่างไร
ฉันมีคลาส Java สองคลาส: B ซึ่งขยายคลาส A อื่นดังนี้: class A { public void myMethod() { /* ... */ } } class B extends A { public void myMethod() { /* Another code */ } } ผมอยากจะเรียกจากA.myMethod() B.myMethod()ฉันมาจากโลก C ++และฉันไม่รู้วิธีการทำสิ่งพื้นฐานใน Java


7
ส่งผ่านเพียงประเภทเป็นพารามิเตอร์ใน C #
โดยสมมุติว่าเป็นประโยชน์สำหรับฉันที่จะทำสิ่งนี้: foo.GetColumnValues(dm.mainColumn, int) foo.GetColumnValues(dm.mainColumn, string) โดยที่เมธอด GetColumns จะเรียกใช้เมธอดอื่นภายในขึ้นอยู่กับประเภทที่ส่งผ่าน ใช่ฉันสามารถทำเป็นบูลีนแฟล็กหรือคล้ายกันได้ฉันแค่สงสัยว่ามีวิธีที่จะส่งผ่านสิ่งนี้หรือไม่แล้วถามว่า: typeof (arg [1]) หรือคล้ายกัน ... ฉันยังสามารถลบล้างวิธีการใช้ยาชื่อสามัญ ฯลฯ - ฉันรู้ว่ามีหลายวิธีในการทำเช่นนี้ฉันแค่อยากรู้ว่าเป็นไปได้หรือไม่
130 c#  types  methods  parameters 

7
วิธีการเรียนสร้าง "TypeError: ... ได้หลายค่าสำหรับอาร์กิวเมนต์คำหลัก ... "
ถ้าฉันกำหนดวิธีการเรียนด้วยอาร์กิวเมนต์คำหลักจึง: class foo(object): def foodo(thing=None, thong='not underwear'): print thing if thing else "nothing" print 'a thong is',thong เรียกวิธีการสร้างTypeError: myfoo = foo() myfoo.foodo(thing="something") ... TypeError: foodo() got multiple values for keyword argument 'thing' เกิดอะไรขึ้น?

7
พฤติกรรมของวิธีการคงที่ขั้นสุดท้าย
ฉันเล่นกับโมดิฟายเออร์ด้วยวิธีการคงที่และเจอพฤติกรรมแปลก ๆ อย่างที่เราทราบกันดีว่าเมธอดแบบคงที่ไม่สามารถแทนที่ได้เนื่องจากเกี่ยวข้องกับคลาสมากกว่าอินสแตนซ์ ดังนั้นหากฉันมีตัวอย่างด้านล่างนี้ก็จะรวบรวมได้ดี //Snippet 1 - Compiles fine public class A { static void ts() { } } class B extends A { static void ts() { } } แต่ถ้าฉันรวมตัวปรับแต่งขั้นสุดท้ายเป็นวิธีการแบบคงที่ในคลาส A การคอมไพล์ล้มเหลว ts () ใน B ไม่สามารถแทนที่ ts () ใน A; วิธีการแทนที่เป็นที่สิ้นสุดแบบคงที่ เหตุใดจึงเกิดขึ้นเมื่อวิธีการคงที่ไม่สามารถแทนที่ได้เลย
124 java  methods  static  final 

10
จะรับตัวแปรอินสแตนซ์ใน Python ได้อย่างไร
มีวิธีการในตัวใน Python เพื่อรับอาร์เรย์ของตัวแปรอินสแตนซ์คลาสทั้งหมดหรือไม่ ตัวอย่างเช่นหากฉันมีรหัสนี้: class hi: def __init__(self): self.ii = "foo" self.kk = "bar" มีวิธีให้ฉันทำไหม: >>> mystery_method(hi) ["ii", "kk"] แก้ไข: เดิมทีฉันขอตัวแปรคลาสผิดพลาด

12
วิธีการเสริมใน Java Interface
จากความเข้าใจของฉันถ้าคุณใช้อินเทอร์เฟซใน java เมธอดที่ระบุในอินเทอร์เฟซนั้นจะต้องถูกใช้โดยคลาสย่อยที่ใช้อินเทอร์เฟซดังกล่าว ฉันสังเกตเห็นว่าในอินเทอร์เฟซบางอย่างเช่นอินเทอร์เฟซคอลเลคชันมีวิธีการที่แสดงความคิดเห็นว่าเป็นทางเลือก แต่สิ่งนี้หมายความว่าอย่างไร มันโยนฉันเล็กน้อยเพราะฉันคิดว่าจะต้องใช้วิธีการทั้งหมดที่ระบุในอินเทอร์เฟซ?
120 java  methods  interface 

8
ส่งผ่านเมธอดเป็นพารามิเตอร์ใน Ruby
ฉันพยายามจะยุ่งกับรูบี้เล็กน้อย ดังนั้นฉันจึงพยายามใช้อัลกอริทึม (ให้ไว้ใน Python) จากหนังสือ "Programming Collective Intelligence" Ruby ในบทที่ 8 ผู้เขียนส่งวิธี a เป็นพารามิเตอร์ ดูเหมือนว่าจะใช้ได้ใน Python แต่ไม่ใช่ใน Ruby ฉันมีวิธีการที่นี่ def gaussian(dist, sigma=10.0) foo end และต้องการเรียกสิ่งนี้ด้วยวิธีอื่น def weightedknn(data, vec1, k = 5, weightf = gaussian) foo weight = weightf(dist) foo end สิ่งที่ฉันได้รับคือข้อผิดพลาด ArgumentError: wrong number of arguments (0 for 1)
119 ruby  parameters  methods 

5
Python: ผูกวิธีหลุด?
ใน Python มีวิธีการผูก unbound method โดยไม่ต้องเรียกมันหรือไม่? ฉันกำลังเขียนโปรแกรม wxPython และสำหรับบางคลาสฉันคิดว่ามันเป็นการดีที่จะจัดกลุ่มข้อมูลของปุ่มทั้งหมดของฉันเข้าด้วยกันเป็นรายการทูเปิลระดับคลาสเช่น: class MyWidget(wx.Window): buttons = [("OK", OnOK), ("Cancel", OnCancel)] # ... def Setup(self): for text, handler in MyWidget.buttons: # This following line is the problem line. b = wx.Button(parent, label=text).Bind(wx.EVT_BUTTON, handler) ปัญหาคือเนื่องจากค่าทั้งหมดhandlerเป็นวิธีการที่ไม่ถูกผูกไว้โปรแกรมของฉันจึงระเบิดออกมาเป็นเปลวไฟที่งดงามและฉันก็ร้องไห้ ฉันมองหาวิธีแก้ปัญหาทางออนไลน์เกี่ยวกับสิ่งที่ดูเหมือนว่าควรจะเป็นปัญหาที่ค่อนข้างตรงไปตรงมาและแก้ไขได้ น่าเสียดายที่ไม่พบอะไรเลย ตอนนี้ฉันกำลังใช้functools.partialเพื่อแก้ไขปัญหานี้ แต่มีใครรู้บ้างว่ามีวิธี Pythonic ที่สะอาดและมีสุขภาพดีในการผูกวิธีที่ไม่ถูกผูกไว้กับอินสแตนซ์และดำเนินการต่อโดยไม่เรียกมัน
118 python  class  methods  bind 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.